From 01919b588c1aad509adb8a4484c0e17531d5d3be Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Tue, 17 Dec 2019 22:58:51 +0000 Subject: [PATCH 01/43] Translated using Weblate (French) Currently translated at 98.2% (1121 of 1141 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 4c8ba4e1f..af7beadb8 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-12-12 20:05+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0000\n" "Last-Translator: Thomas Vincent \n" "Language-Team: French \n" @@ -680,16 +680,16 @@ msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" +"Cockpit nécessite que vous y accédiez depuis un nom de domaine. Il ne " +"fonctionnera pas si vous y accédez en utilisant une adresse IP dans son URL." #: plinth/modules/cockpit/templates/cockpit.html:26 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Point d'accès" +msgstr "Accès" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." -msgstr "" +msgstr "Cockpit ne fonctionnera qu’en y accédant depuis les URL suivantes." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -700,6 +700,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Vous pouvez ici configurer quelques options comme le nom d’hôte, le nom de " +"domaine, la page d’accueil du serveur web, etc." #: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 @@ -2865,10 +2867,8 @@ msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" #: plinth/modules/minidlna/__init__.py:43 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Serveur VoIP Mumble" +msgstr "Serveur média simple" #: plinth/modules/minidlna/__init__.py:46 msgid "" @@ -2899,19 +2899,19 @@ msgstr "" #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" -msgstr "" +msgstr "vlc" #: plinth/modules/minidlna/manifest.py:64 msgid "kodi" -msgstr "" +msgstr "kodi" #: plinth/modules/minidlna/manifest.py:103 msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:114 msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/views.py:57 msgid "Specified directory does not exist." From fe121e1fab92cc1abe87a4c70f4e786332a7c4ec Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Thu, 19 Dec 2019 19:37:12 +0000 Subject: [PATCH 02/43] Translated using Weblate (French) Currently translated at 100.0% (1141 of 1141 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 75 ++++++++++++-------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index af7beadb8..71bed96ce 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-12-18 23:21+0000\n" +"PO-Revision-Date: 2019-12-20 20:21+0000\n" "Last-Translator: Thomas Vincent \n" "Language-Team: French \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -2880,14 +2880,21 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA est un serveur logiciel de média simple ayant pour but d’être " +"entièrement compatible avec les clients DLNA et UPnP-AV. Le démon MiniDNLA " +"sert des fichiers de médias (musique, photos et vidéos) à des clients sur un " +"réseau. DNLA/UPnP est un protocole sans configuration et est compatible avec " +"tout périphérique ayant la certification DLNA comme les lecteurs portables, " +"les smartphones, les télévisions et les systèmes de jeu (comme PS3 et " +"Xbox360) ou les applications comme totem et Kodi." #: plinth/modules/minidlna/__init__.py:58 msgid "Media streaming server" -msgstr "" +msgstr "Serveur de streaming de média" #: plinth/modules/minidlna/forms.py:30 msgid "Media Files Directory" -msgstr "" +msgstr "Répertoire des fichiers multimédia" #: plinth/modules/minidlna/forms.py:31 msgid "" @@ -2896,6 +2903,11 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"Répertoire utilisé par MiniDLNA pour lire le contenu. Tous les sous-" +"répertoires seront également analysés à la recherche de fichiers multimédia. " +"Si vous changez le répertoire par défaut, assurez-vous que celui-ci existe " +"et que l’utilisateur \"minidlna\" puisse le lire. Tout répertoire d’" +"utilisateur (\"/home/utilisateur\") fonctionnera en général." #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" @@ -2915,11 +2927,11 @@ msgstr "totem" #: plinth/modules/minidlna/views.py:57 msgid "Specified directory does not exist." -msgstr "" +msgstr "Le répertoire indiqué n’existe pas." #: plinth/modules/minidlna/views.py:63 msgid "Updated media directory" -msgstr "" +msgstr "Répertoire multimédia mis à jour" #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 @@ -3169,16 +3181,17 @@ msgstr "" "Android." #: plinth/modules/mumble/forms.py:31 -#, fuzzy -#| msgid "SSH server password" msgid "Set SuperUser Password" -msgstr "Mot de passe du serveur SSH" +msgstr "Régler le mot de passe du super utilisateur" #: plinth/modules/mumble/forms.py:34 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." msgstr "" +"Optionnel. Laissez ce champ vide pour conserver le mot de passe actuel. Le " +"mot de passe du super utilisateur peut servir à gérer les permissions dans " +"Mumble." #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" @@ -3189,10 +3202,8 @@ msgid "Mumblefly" msgstr "Mumblefly" #: plinth/modules/mumble/views.py:57 -#, fuzzy -#| msgid "Password changed successfully." msgid "SuperUser password successfully updated." -msgstr "Mot de passe changé avec succès." +msgstr "Mot de passe du super utilisateur mis à jour avec succès." #: plinth/modules/names/__init__.py:37 msgid "Name Services" @@ -5488,50 +5499,40 @@ msgid "The device is mounted by another user." msgstr "Le media est monté par un autre utilisateur." #: plinth/modules/storage/forms.py:75 -#, fuzzy -#| msgid "Invalid repository name." msgid "Invalid directory name." -msgstr "Nom de dépôt invalide." +msgstr "Nom de répertoire invalide." #: plinth/modules/storage/forms.py:91 msgid "Directory does not exist." -msgstr "" +msgstr "Le répertoire n’existe pas." #: plinth/modules/storage/forms.py:93 -#, fuzzy -#| msgid "Download directory" msgid "Path is not a directory." -msgstr "Répertoire de téléchargement" +msgstr "Le chemin n’est pas un répertoire." #: plinth/modules/storage/forms.py:96 -#, fuzzy -#| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." -msgstr "Le media est monté par un autre utilisateur." +msgstr "Le répertoire n’est pas lisible par l’utilisateur." #: plinth/modules/storage/forms.py:99 msgid "Directory is not writable by the user." -msgstr "" +msgstr "L’utilisateur ne peut pas écrire dans le répertoire." #: plinth/modules/storage/forms.py:104 -#, fuzzy -#| msgid "Download directory" msgid "Directory" -msgstr "Répertoire de téléchargement" +msgstr "Répertoire" #: plinth/modules/storage/forms.py:107 msgid "Subdirectory (optional)" -msgstr "" +msgstr "Sous-répertoire (optionnel)" #: plinth/modules/storage/forms.py:154 -#, fuzzy -#| msgid "Samba" msgid "Samba share" -msgstr "Samba" +msgstr "Partage samba" #: plinth/modules/storage/forms.py:155 msgid "Other directory (specify below)" -msgstr "" +msgstr "Autre répertoire (indiquer ci-dessous)" #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" @@ -5837,23 +5838,17 @@ msgstr "" "contourner la censure." #: plinth/modules/tor/forms.py:118 -#, fuzzy -#| msgid "Enable Tor Onion Service" msgid "Enable Tor Hidden Service" -msgstr "Activer le service Tor Onion" +msgstr "Activer le service Tor caché" #: plinth/modules/tor/forms.py:120 -#, fuzzy, python-brace-format -#| msgid "" -#| "An onion service will allow {box_name} to provide selected services (such " -#| "as wiki or chat) without revealing its location. Do not use this for " -#| "strong anonymity yet." +#, python-brace-format msgid "" "A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -"Un service Onion permettra à {box_name} de proposer les services " +"Un service caché permettra à {box_name} de proposer les services " "sélectionnés (comme un wiki ou Chat) sans révéler votre emplacement. Ne pas " "encore utiliser pour l'anonymat fort." From 851d1c7c288287bca496037fd1cbb75b37c8b69a Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Mon, 9 Dec 2019 16:02:00 +0300 Subject: [PATCH 03/43] app: Fix javascript doesn't run on first visit Merge Request !1644 fixed the 'const redeclaration' error but introduced another issue - javascript on the app configuration page doesn't run on first visit. Relates to #1715 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- static/themes/default/js/app.template.js | 56 ++++++++++++------------ 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/static/themes/default/js/app.template.js b/static/themes/default/js/app.template.js index 95e56cd62..0015d19b6 100644 --- a/static/themes/default/js/app.template.js +++ b/static/themes/default/js/app.template.js @@ -21,38 +21,36 @@ * in this page. */ -$(document).on('turbolinks:load', function() { - const appForm = document.querySelector('#app-form'); - const appToggleContainer = document.querySelector('#app-toggle-container'); - const appToggleButton = document.querySelector('#app-toggle-button'); - const appToggleInput = document.querySelector('#app-toggle-input'); +var appForm = document.querySelector('#app-form'); +var appToggleContainer = document.querySelector('#app-toggle-container'); +var appToggleButton = document.querySelector('#app-toggle-button'); +var appToggleInput = document.querySelector('#app-toggle-input'); - if (appForm && appToggleButton && appToggleInput && appToggleContainer) { - const onSubmit = (e) => { - e.preventDefault; - appToggleInput.checked = !appToggleInput.checked; - appForm.submit(); - }; +if (appForm && appToggleButton && appToggleInput && appToggleContainer) { + var onSubmit = (e) => { + e.preventDefault; + appToggleInput.checked = !appToggleInput.checked; + appForm.submit(); + }; - appToggleButton.addEventListener('click', onSubmit); + appToggleButton.addEventListener('click', onSubmit); - /** - * if javascript is enabled, this script will run and show the toggle button - */ + /** + * if javascript is enabled, this script will run and show the toggle button + */ - appToggleInput.parentElement.style.display = 'none'; - appToggleContainer.style.display = 'flex'; + appToggleInput.parentElement.style.display = 'none'; + appToggleContainer.style.display = 'flex'; - /* A basic form has only three elements: - * 1. An input tag with CSRF token - * 2. A div with form elements - * 3. A Submit button - * - * This kind of form can be completely hidden. - */ - if (appForm.children.length === 3) { - appForm.style.display = 'none'; - appForm.previousElementSibling.style.display = 'none'; - } + /* A basic form has only three elements: + * 1. An input tag with CSRF token + * 2. A div with form elements + * 3. A Submit button + * + * This kind of form can be completely hidden. + */ + if (appForm.children.length === 3) { + appForm.style.display = 'none'; + appForm.previousElementSibling.style.display = 'none'; } -}); +} From 83cb305026545c39131c71b45775ebe60c8ffb71 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Sun, 8 Dec 2019 19:26:21 +0300 Subject: [PATCH 04/43] samba: private shares - new share types - group and home shares - users: when creating, deleting or changing user password, update also Samba tdbsam backend database - users: new managed packages - samba-common-bin, tdb-tools - module page: show current samba users who are in freedombox-share group - module page: show users who should re-enter their password in the password change page - fix: use os.path.ismount() from Python standard library to validate a mount point - fix: samba share permissions, fixes #1729 - fix: delete a share - do not raise an exception if the share doesn't exist - storage: show samba share type in the directory selection form Closes #1727 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/samba | 140 ++++++++++++++++------ actions/users | 69 ++++++++++- plinth/modules/samba/__init__.py | 63 ++++++++-- plinth/modules/samba/static/samba.js | 33 ----- plinth/modules/samba/templates/samba.html | 117 ++++++++++-------- plinth/modules/samba/urls.py | 4 +- plinth/modules/samba/views.py | 75 +++++++----- plinth/modules/storage/forms.py | 11 +- plinth/modules/users/__init__.py | 2 +- plinth/modules/users/forms.py | 18 ++- 10 files changed, 360 insertions(+), 172 deletions(-) delete mode 100644 plinth/modules/samba/static/samba.js diff --git a/actions/samba b/actions/samba index 5545fa52e..ffe065afe 100755 --- a/actions/samba +++ b/actions/samba @@ -51,11 +51,11 @@ CONF = r''' logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server - obey pam restrictions = yes - unix password sync = yes - passwd program = /usr/bin/passwd %u - passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . - pam password change = yes + #obey pam restrictions = yes + #unix password sync = yes + #passwd program = /usr/bin/passwd %u + #passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . + #pam password change = yes map to guest = bad user # connection inactivity timeout in minutes deadtime = 5 @@ -73,9 +73,13 @@ def parse_arguments(): subparsers.add_parser('get-shares', help='Get configured samba shares') + subparsers.add_parser('get-users', help='Get users from Samba database') + subparser = subparsers.add_parser('add-share', help='Add new samba share') subparser.add_argument('--mount-point', help='Path of the mount point', required=True) + subparser.add_argument('--share-type', help='Type of the share', + required=True, choices=['open', 'group', 'home']) subparser.add_argument('--windows-filesystem', required=False, default=False, action='store_true', help='Path is Windows filesystem') @@ -84,6 +88,8 @@ def parse_arguments(): 'delete-share', help='Delete a samba share configuration') subparser.add_argument('--mount-point', help='Path of the mount point', required=True) + subparser.add_argument('--share-type', help='Type of the share', + required=True, choices=['open', 'group', 'home']) subparsers.add_parser('dump-shares', help='Dump share configuration to file') @@ -104,20 +110,38 @@ def _conf_command(parameters, **kwargs): subprocess.check_call(['net', 'conf'] + parameters, **kwargs) -def _create_share(mount_point, windows_filesystem=False): - """Create a samba share.""" +def _create_share(mount_point, share_type, windows_filesystem=False): + """Create samba public, group and private shares.""" + if share_type == 'open': + subdir = 'open_share' + elif share_type == 'group': + subdir = 'group_share' + elif share_type == 'home': + subdir = 'homes' + shares_path = _get_shares_path(mount_point) - open_share_path = os.path.join(mount_point, shares_path, 'open_share') - os.makedirs(open_share_path, exist_ok=True) + 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: - _set_open_share_permissions(open_share_path) + if share_type in ['open', 'group']: + _set_share_permissions(share_path) + else: + shutil.chown(share_path, group='users') + os.chmod(share_path, 0o0775) share_name = _create_share_name(mount_point) - _define_open_share(share_name, open_share_path, windows_filesystem) + + if share_type == 'open': + _define_open_share(share_name, share_path, windows_filesystem) + elif share_type == 'group': + _define_group_share(share_name + '_group', share_path, + windows_filesystem) + elif share_type == 'home': + _define_homes_share(share_name + '_home', share_path) def _create_share_name(mount_point): @@ -141,17 +165,40 @@ def _define_open_share(name, path, windows_filesystem=False): _conf_command(['setparm', name, 'inherit permissions', 'yes']) +def _define_group_share(name, path, windows_filesystem=False): + """Define a group samba share.""" + try: + _conf_command(['delshare', name], stderr=subprocess.DEVNULL) + except subprocess.CalledProcessError: + pass + _conf_command(['addshare', name, path, 'writeable=y', 'guest_ok=n']) + _conf_command(['setparm', name, 'valid users', '@freedombox-share @admin']) + if not windows_filesystem: + _conf_command(['setparm', name, 'force group', 'freedombox-share']) + _conf_command(['setparm', name, 'inherit permissions', 'yes']) + + +def _define_homes_share(name, path): + """Define a samba share for private homes.""" + try: + _conf_command(['delshare', name], stderr=subprocess.DEVNULL) + except subprocess.CalledProcessError: + pass + userpath = os.path.join(path, '%u') + _conf_command(['addshare', name, userpath, 'writeable=y', 'guest_ok=n']) + _conf_command(['setparm', name, 'valid users', '@freedombox-share @admin']) + _conf_command( + ['setparm', name, 'preexec', 'mkdir -p -m 755 {}'.format(userpath)]) + + def _get_mount_point(path): """Get the mount point where the share is.""" subpath = 'FreedomBox/shares/' if '/var/lib/freedombox/shares/' in path: - try: - # test whether var directory is a mount point - _validate_mount_point(path.split('lib/freedombox/shares/')[0]) - except RuntimeError: - subpath = 'var/lib/freedombox/shares/' - else: + if os.path.ismount(path.split('lib/freedombox/shares/')[0]): subpath = 'lib/freedombox/shares/' + else: + subpath = 'var/lib/freedombox/shares/' return path.split(subpath)[0] @@ -160,13 +207,20 @@ def _get_shares(): """Get shares.""" shares = [] output = subprocess.check_output(['net', 'conf', 'list']) - config = configparser.ConfigParser() + config = configparser.RawConfigParser() config.read_string(output.decode()) for name in config.sections(): - path = config[name]['path'] - mount_point = _get_mount_point(path) + share_type = 'open' + if name.endswith('_group'): + share_type = 'group' + elif name.endswith('_home'): + share_type = 'home' + share_path = config[name]['path'] + mount_point = _get_mount_point(share_path) mount_point = os.path.normpath(mount_point) - shares.append(dict(name=name, mount_point=mount_point, path=path)) + shares.append( + dict(name=name, mount_point=mount_point, path=share_path, + share_type=share_type)) return shares @@ -221,19 +275,31 @@ def _use_config_file(conf_file): aug.save() -def _validate_mount_point(path): - """Validate that given path string is a mount point.""" - if path != '/': - parent_path = os.path.dirname(path) - if os.stat(path).st_dev == os.stat(parent_path).st_dev: - raise RuntimeError('Path "{0}" is not a mount point.'.format(path)) +def _set_share_permissions(directory): + """Set file and directory permissions for a share.""" + shutil.chown(directory, group='freedombox-share') + os.chmod(directory, 0o2775) + for root, dirs, files in os.walk(directory): + for subdir in dirs: + subdir_path = os.path.join(root, subdir) + shutil.chown(subdir_path, group='freedombox-share') + os.chmod(subdir_path, 0o2775) + for file in files: + file_path = os.path.join(root, file) + shutil.chown(file_path, group='freedombox-share') + os.chmod(file_path, 0o0664) + subprocess.check_call(['setfacl', '-Rm', 'g::rwX', directory]) + subprocess.check_call(['setfacl', '-Rdm', 'g::rwX', directory]) def subcommand_add_share(arguments): """Create a samba share.""" mount_point = os.path.normpath(arguments.mount_point) - _validate_mount_point(mount_point) - _create_share(mount_point, arguments.windows_filesystem) + if not os.path.ismount(mount_point): + raise RuntimeError( + 'Path "{0}" is not a mount point.'.format(mount_point)) + _create_share(mount_point, arguments.share_type, + arguments.windows_filesystem) def subcommand_delete_share(arguments): @@ -241,13 +307,10 @@ def subcommand_delete_share(arguments): mount_point = os.path.normpath(arguments.mount_point) shares = _get_shares() for share in shares: - if share['mount_point'] == mount_point: + if share['mount_point'] == mount_point and share[ + 'share_type'] == arguments.share_type: _close_share(share['name']) _conf_command(['delshare', share['name']]) - break - else: - raise RuntimeError( - 'Mount point "{0}" is not shared.'.format(mount_point)) def subcommand_get_shares(_): @@ -255,11 +318,20 @@ def subcommand_get_shares(_): print(json.dumps(_get_shares())) +def subcommand_get_users(_): + """Get users from Samba database.""" + output = subprocess.check_output(['pdbedit', '-L']).decode() + samba_users = [line.split(':')[0] for line in output.split()] + print(json.dumps({'users': samba_users})) + + def subcommand_setup(_): """Configure samba, use custom samba config file.""" with open(CONF_PATH, 'w') as file_handle: file_handle.write(CONF) _use_config_file(CONF_PATH) + os.makedirs('/var/lib/freedombox', exist_ok=True) + os.chmod('/var/lib/freedombox', 0o0755) if action_utils.service_is_running('smbd'): action_utils.service_restart('smbd') diff --git a/actions/users b/actions/users index 605b91156..3b26f1398 100755 --- a/actions/users +++ b/actions/users @@ -27,7 +27,6 @@ import subprocess import sys import augeas - from plinth import action_utils ACCESS_CONF = '/etc/security/access.conf' @@ -80,6 +79,12 @@ def parse_arguments(): subparser.add_argument('username', help='LDAP user to add to group') subparser.add_argument('groupname', help='LDAP group to add the user to') + subparser = subparsers.add_parser('set-user-status', + help='Set user as active or inactive') + subparser.add_argument('username', help='User to change status') + subparser.add_argument('status', choices=['active', 'inactive'], + help='New status of the user') + subparser = subparsers.add_parser( 'remove-user-from-group', help='Remove an LDAP user from an LDAP group') @@ -227,6 +232,23 @@ def configure_ldapscripts(): aug.save() +def get_samba_users(): + """Get users from the Samba user database.""" + # 'pdbedit -L' is better for listing users but is installed only with samba + stdout = subprocess.check_output( + ['tdbdump', '/var/lib/samba/private/passdb.tdb']).decode() + return re.findall(r'USER_(.*)\\0', stdout) + + +def disconnect_samba_user(username): + """Disconnect a Samba user.""" + try: + subprocess.check_call(['pkill', '-U', username, 'smbd']) + except subprocess.CalledProcessError as error: + if error.returncode != 1: + raise + + def read_password(): """Read the password from stdin.""" return ''.join(sys.stdin) @@ -235,8 +257,10 @@ def read_password(): def subcommand_create_user(arguments): """Create an LDAP user, set password and flush cache.""" _run(['ldapadduser', arguments.username, 'users']) - set_user_password(arguments.username, read_password()) + password = read_password() + set_user_password(arguments.username, password) flush_cache() + set_samba_user(arguments.username, password) def subcommand_remove_user(arguments): @@ -244,10 +268,15 @@ def subcommand_remove_user(arguments): username = arguments.username groups = get_user_groups(username) + if username in get_samba_users(): + subprocess.check_call(['smbpasswd', '-x', username]) + disconnect_samba_user(username) + for group in groups: remove_user_from_group(username, group) _run(['ldapdeleteuser', username]) + flush_cache() @@ -275,9 +304,25 @@ def set_user_password(username, password): _run(['ldapsetpasswd', username, password]) +def set_samba_user(username, password): + """Insert a user to the Samba database. + + If a user already exists, update password. + """ + proc = subprocess.Popen(['smbpasswd', '-a', '-s', username], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + _, stderr = proc.communicate(input='{0}\n{0}\n'.format(password).encode(), + timeout=10) + if proc.returncode != 0: + raise RuntimeError('Unable to add Samba user: ', stderr) + + def subcommand_set_user_password(arguments): """Set a user's password.""" - set_user_password(arguments.username, read_password()) + password = read_password() + set_user_password(arguments.username, password) + set_samba_user(arguments.username, password) def get_user_groups(username): @@ -352,6 +397,8 @@ def subcommand_remove_user_from_group(arguments): """Remove an LDAP user from an LDAP group.""" remove_user_from_group(arguments.username, arguments.groupname) flush_cache() + if arguments.groupname == 'freedombox-share': + disconnect_samba_user(arguments.username) def subcommand_get_group_users(arguments): @@ -369,6 +416,22 @@ def subcommand_get_group_users(arguments): print(user) +def subcommand_set_user_status(arguments): + """Set the status of the user.""" + username = arguments.username + status = arguments.status + + if status == 'active': + flag = '-e' + else: + flag = '-d' + + if username in get_samba_users(): + subprocess.check_call(['smbpasswd', flag, username]) + if status == 'inactive': + disconnect_samba_user(username) + + def flush_cache(): """Flush nscd and apache2 cache.""" _run(['nscd', '--invalidate=passwd']) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index 9524ed27f..937299b1a 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -18,7 +18,10 @@ FreedomBox app to configure samba. """ +import grp import json +import os +import pwd import socket from django.urls import reverse_lazy @@ -34,7 +37,7 @@ from plinth.utils import format_lazy from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 1 +version = 2 managed_services = ['smbd', 'nmbd'] @@ -51,12 +54,18 @@ description = [ 'other computers in your local network.'), format_lazy( _('After installation, you can choose which disks to use for sharing. ' - 'Enabled {hostname} shares are open to everyone in your local ' - 'network and are accessible under Network section in the file ' - 'manager on your computer.'), hostname=socket.gethostname().upper()) + 'Enabled shares are accessbile in the file manager on your computer ' + 'at location \\\\{hostname} (on Windows) or smb://{hostname}.local ' + '(on Linux and Mac). There are three types of shares ' + 'you can choose from: '), hostname=socket.gethostname()), + _('Open share - accessible to everyone in your local network.'), + _('Group share - accessible only to FreedomBox users who are in the ' + 'freedombox-share group.'), + _('Home share - every user in the freedombox-share group can have their ' + 'own private space.'), ] -group = ('freedombox-share', _('Access shared folders from inside the server')) +group = ('freedombox-share', _('Access to the private shares')) clients = clients @@ -124,18 +133,43 @@ def diagnose(): return results -def add_share(mount_point, filesystem): +def add_share(mount_point, share_type, filesystem): """Add a share.""" - command = ['add-share', '--mount-point', mount_point] + command = [ + 'add-share', '--mount-point', mount_point, '--share-type', share_type + ] if filesystem in ['ntfs', 'vfat']: command = command + ['--windows-filesystem'] actions.superuser_run('samba', command) -def delete_share(mount_point): +def delete_share(mount_point, share_type): """Delete a share.""" - command = ['delete-share', '--mount-point', mount_point] - actions.superuser_run('samba', command) + actions.superuser_run('samba', [ + 'delete-share', '--mount-point', mount_point, '--share-type', + share_type + ]) + + +def get_users(): + """Get non-system users who are in the freedombox-share or admin group.""" + output = actions.superuser_run('samba', ['get-users']) + samba_users = json.loads(output)['users'] + group_users = grp.getgrnam('freedombox-share').gr_mem + grp.getgrnam( + 'admin').gr_mem + + allowed_users = [] + for group_user in group_users: + uid = pwd.getpwnam(group_user).pw_uid + if uid > 1000: + allowed_users.append(group_user) + + return { + 'access_ok': + sorted(set(allowed_users) & set(samba_users)), + 'password_re_enter_needed': + sorted(set(allowed_users) - set(samba_users)) + } def get_shares(): @@ -145,6 +179,15 @@ def get_shares(): return json.loads(output) +def disk_name(mount_point): + """Get a disk name.""" + share_name = os.path.basename(mount_point) + if not share_name: + share_name = 'disk' + + return share_name + + def backup_pre(packet): """Save registry share configuration.""" actions.superuser_run('samba', ['dump-shares']) diff --git a/plinth/modules/samba/static/samba.js b/plinth/modules/samba/static/samba.js deleted file mode 100644 index 9fd6f45e1..000000000 --- a/plinth/modules/samba/static/samba.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * @licstart The following is the entire license notice for the JavaScript - * code in this page. - * - * 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 . - * - * @licend The above is the entire license notice for the JavaScript code - * in this page. - */ - - -$(document).on('turbolinks:load', function() { - const share_checkbox = $(".shareform > input[type='checkbox']"); - - share_checkbox.change(function(event) { - this.disabled=true; - this.style.cursor='wait'; - this.form.submit(); - }); -}); diff --git a/plinth/modules/samba/templates/samba.html b/plinth/modules/samba/templates/samba.html index f2b563beb..02bb81f4f 100644 --- a/plinth/modules/samba/templates/samba.html +++ b/plinth/modules/samba/templates/samba.html @@ -20,6 +20,7 @@ {% load bootstrap %} {% load i18n %} +{% load plinth_extras %} {% load static %} {% block page_head %} @@ -35,79 +36,91 @@ {{ block.super }} {% if is_enabled %} -

{% trans "Select disks for sharing" %}

+

{% trans "Shares" %}

{% blocktrans trimmed %} - Note: only specially created directory will be shared on selected disks, + Note: only specially created directories will be shared on selected disks, not the whole disk. {% endblocktrans %}

- +
- - - - - + + - {% for disk in disks %} + {% for disk in disks %} + - - - - - - {% endfor %} + {% endfor %} -
{% trans "Device" %}{% trans "Label" %}{% trans "Mount Point" %}{% trans "Type" %}{% trans "Disk Name" %}{% trans "Shares" %} {% trans "Used" %}
{{ disk.name|default_if_none:"" }} - {% if disk.mount_point in shared_mounts %} -
- {% csrf_token %} - -
- {% else %} -
- {% csrf_token %} - - -
- {% endif %} +
+ {% csrf_token %} + + + {% for share_type in share_types %} + + {% endfor %} +
{{ disk.device }}{{ disk.label|default_if_none:"" }}{{ disk.mount_point }}{{ disk.filesystem_type }} +
{% if disk.percent_used < 75 %}
- {{ disk.percent_used }}% -
-
-
{{ disk.used_str }} / {{ disk.size_str }}
+ role="progressbar" aria-valuenow="{{ disk.percent_used }}" + aria-valuemin="0" aria-valuemax="100" + style="width: {{ disk.percent_used }}%;"> + {{ disk.percent_used }}% + + +
{{ disk.used_str }} / {{ disk.size_str }}
+ + +

+ {% url 'storage:index' as storage_url %} + {% url 'users:index' as users_url %} + {% blocktrans trimmed %} + You can find additional information about disks on the + storage module page and configure + access to the shares on the users module page. + {% endblocktrans %}

+ +

{% trans "Users who can currently access group and home shares" %}: + {{ users.access_ok|join:", " }}

+ + {% if users.password_re_enter_needed %} +

{% trans "Users who need to re-enter their password on the password change page to access group and home shares" %}: + {{ users.password_re_enter_needed|join:", " }}.

+ {% endif %} {% if unavailable_shares %} -

{% trans "Shares configured but the disk is not available" %}

+

{% trans "Unavailable Shares" %}

- {% trans "If the disk is plugged back in, sharing will be automatically enabled." %} + {% blocktrans trimmed %} + Shares that are configured but the disk is not available. If the disk + is plugged back in, sharing will be automatically enabled. + {% endblocktrans %}

@@ -122,9 +135,12 @@ @@ -135,6 +151,3 @@ {% endif %} {% endblock %} -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/samba/urls.py b/plinth/modules/samba/urls.py index 93961194e..8df63f5a4 100644 --- a/plinth/modules/samba/urls.py +++ b/plinth/modules/samba/urls.py @@ -25,7 +25,5 @@ from . import views urlpatterns = [ url(r'^apps/samba/$', views.SambaAppView.as_view(), name='index'), url(r'^apps/samba/share/(?P[A-Za-z0-9%_.\-~]+)/$', - views.share, name='share'), - url(r'^apps/samba/unshare/(?P[A-Za-z0-9%_.\-~]+)/$', - views.unshare, name='unshare'), + views.share, name='share') ] diff --git a/plinth/modules/samba/views.py b/plinth/modules/samba/views.py index a8f5c9185..53c01678b 100644 --- a/plinth/modules/samba/views.py +++ b/plinth/modules/samba/views.py @@ -20,13 +20,16 @@ Views for samba module. import logging import urllib.parse +from collections import defaultdict from django.contrib import messages from django.shortcuts import redirect from django.urls import reverse from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST + from plinth import views +from plinth.errors import ActionError from plinth.modules import samba, storage logger = logging.getLogger(__name__) @@ -45,9 +48,20 @@ class SambaAppView(views.AppView): """Return template context data.""" context = super().get_context_data(*args, **kwargs) disks = storage.get_disks() - context['disks'] = disks shares = samba.get_shares() - context['shared_mounts'] = [share['mount_point'] for share in shares] + + for disk in disks: + disk['name'] = samba.disk_name(disk['mount_point']) + context['disks'] = disks + + shared_mounts = defaultdict(list) + for share in shares: + shared_mounts[share['mount_point']].append(share['share_type']) + context['shared_mounts'] = shared_mounts + + context['share_types'] = [('open', _('Open Share')), + ('group', _('Group Share')), + ('home', _('Home Share'))] unavailable_shares = [] for share in shares: @@ -58,6 +72,8 @@ class SambaAppView(views.AppView): unavailable_shares.append(share) context['unavailable_shares'] = unavailable_shares + context['users'] = samba.get_users() + return context @@ -70,35 +86,30 @@ def share(request, mount_point): """ mount_point = urllib.parse.unquote(mount_point) filesystem = request.POST.get('filesystem_type', '') - try: - samba.add_share(mount_point, filesystem) - messages.success(request, _('Share enabled.')) - except Exception as exception: - logger.exception('Error enabling share') - messages.error( - request, - _('Error enabling share: {error_message}').format( - error_message=exception)) - - return redirect(reverse('samba:index')) - - -@require_POST -def unshare(request, mount_point): - """Disable sharing, given its name. - - mount_point is urlquoted. - - """ - mount_point = urllib.parse.unquote(mount_point) - try: - samba.delete_share(mount_point) - messages.success(request, _('Share disabled.')) - except Exception as exception: - logger.exception('Error disabling share') - messages.error( - request, - _('Error disabling share: {error_message}').format( - error_message=exception)) + + share_types = ['open', 'group', 'home'] + + for share_type in share_types: + action = request.POST.get(share_type + '_share', '') + if action == 'enable': + try: + samba.add_share(mount_point, share_type, filesystem) + messages.success(request, _('Share enabled.')) + except ActionError as exception: + logger.exception('Error enabling share') + messages.error( + request, + _('Error enabling share: {error_message}').format( + error_message=exception)) + elif action == 'disable': + try: + samba.delete_share(mount_point, share_type) + messages.success(request, _('Share disabled.')) + except ActionError as exception: + logger.exception('Error disabling share') + messages.error( + request, + _('Error disabling share: {error_message}').format( + error_message=exception)) return redirect(reverse('samba:index')) diff --git a/plinth/modules/storage/forms.py b/plinth/modules/storage/forms.py index 17a0ec7a1..a22e48195 100644 --- a/plinth/modules/storage/forms.py +++ b/plinth/modules/storage/forms.py @@ -150,8 +150,15 @@ class DirectorySelectForm(AppForm): _('Default'), self.default))] available_shares = get_available_samba_shares() for share in available_shares: - choices = choices + [(share['path'], '{0} ({1}): {2}'.format( - _('Samba share'), share['name'], share['path']))] + if share['share_type'] != 'home': + share_type = _('Share') + if share['share_type'] == 'group': + share_type = _('Group Share') + elif share['share_type'] == 'open': + share_type = _('Open Share') + selection_text = 'Samba {0} ({1}): {2}'.format( + share_type, share['name'], share['path']) + choices = choices + [(share['path'], selection_text)] choices = choices + [('/', _('Other directory (specify below)'))] initial_value, subdir = self.get_initial(choices) diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index ddb03765d..69deb9d8d 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -34,7 +34,7 @@ is_essential = True managed_packages = [ 'ldapscripts', 'ldap-utils', 'libnss-ldapd', 'libpam-ldapd', 'nscd', - 'nslcd', 'slapd' + 'nslcd', 'samba-common-bin', 'slapd', 'tdb-tools' ] first_boot_steps = [ diff --git a/plinth/modules/users/forms.py b/plinth/modules/users/forms.py index 0d415a95a..ee65820d2 100644 --- a/plinth/modules/users/forms.py +++ b/plinth/modules/users/forms.py @@ -17,6 +17,7 @@ import subprocess +import plinth.forms from django import forms from django.contrib import auth, messages from django.contrib.auth.forms import SetPasswordForm, UserCreationForm @@ -24,8 +25,6 @@ from django.contrib.auth.models import Group, User from django.core.exceptions import ValidationError from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy - -import plinth.forms from plinth import actions, module_loader from plinth.errors import ActionError from plinth.modules import first_boot, users @@ -262,6 +261,21 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, except ActionError: messages.error(self.request, _('Unable to set SSH keys.')) + is_active = self.cleaned_data['is_active'] + if self.initial['is_active'] != is_active: + if is_active: + status = 'active' + else: + status = 'inactive' + try: + actions.superuser_run( + 'users', + ['set-user-status', + user.get_username(), status]) + except ActionError: + messages.error(self.request, + _('Failed to change user status.')) + return user def validate_last_admin_user(self, groups): From 2351744024c43b275cad13fc0e84a7e62547df2b Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Fri, 20 Dec 2019 21:29:12 -0500 Subject: [PATCH 05/43] samba: Fix spelling in description Signed-off-by: James Valleroy --- plinth/modules/samba/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index 937299b1a..b0b6d20ea 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -54,7 +54,7 @@ description = [ 'other computers in your local network.'), format_lazy( _('After installation, you can choose which disks to use for sharing. ' - 'Enabled shares are accessbile in the file manager on your computer ' + 'Enabled shares are accessible in the file manager on your computer ' 'at location \\\\{hostname} (on Windows) or smb://{hostname}.local ' '(on Linux and Mac). There are three types of shares ' 'you can choose from: '), hostname=socket.gethostname()), From fe16f24ad52838e56fda986e1e644cdbb9700ad7 Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Sat, 21 Dec 2019 19:39:20 +0000 Subject: [PATCH 06/43] Translated using Weblate (German) Currently translated at 96.4% (1100 of 1141 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 77 ++++++++++++-------------- 1 file changed, 35 insertions(+), 42 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index e068914cf..55cf6bb38 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-12-16 22:57+0000\n" -"Last-Translator: /rgb \n" +"PO-Revision-Date: 2019-12-22 20:21+0000\n" +"Last-Translator: Michael Breidenbach \n" "Language-Team: German \n" "Language: de\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -671,36 +671,32 @@ msgstr "" "einzugeben." #: plinth/modules/cockpit/__init__.py:59 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /_cockpit/ path on the web server. It can be " -#| "accessed by any user on {box_name} belonging " -#| "to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Falls aktiviert, steht Cockpit auf dem Webserver unter /_cockpit/ zur Verfügung. Zugriff hat jeder Benutzer auf {box_name}, der zur Gruppe der " -"Administratoren gehört." +"Auf sie kann von jedem Benutzer auf der " +"{box_name} zugegriffen werden, der zur Administratorgruppe gehören." #: plinth/modules/cockpit/__init__.py:63 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" +"Cockpit erfordert, dass Sie über einen Domainnamen darauf zugreifen. Es " +"funktioniert nicht, wenn auf eine IP-Adresse als Teil der URL zugegriffen " +"wird." #: plinth/modules/cockpit/templates/cockpit.html:26 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Zugangspunkt" +msgstr "Zugriff" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." msgstr "" +"Das Cockpit funktioniert nur, wenn es über die folgenden URLs aufgerufen " +"wird." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -711,6 +707,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Hier können Sie einige allgemeine Konfigurationsoptionen wie Hostname, " +"Domainname, Webserver-Homepage usw. festlegen." #: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 @@ -972,19 +970,12 @@ msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge ist ein BitTorrent-Client mit einer Weboberfläche." #: plinth/modules/deluge/__init__.py:47 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. " -#| "The default password is 'deluge', but you should log in and change it " -#| "immediately after enabling this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Falls aktiviert, ist die Deluge-Weboberfläche über /deluge verfügbar. Das Standardpasswort lautet " -"„deluge“, aber dieses sollte sofort nach dem ersten Anmelden geändert werden." +"Das Standardkennwort ist 'deluge', aber Sie sollten sich anmelden und es " +"sofort ändern, nachdem Sie diesen Dienst aktiviert haben." #: plinth/modules/deluge/__init__.py:51 #: plinth/modules/transmission/__init__.py:57 @@ -2232,23 +2223,14 @@ msgid "Wiki and Blog" msgstr "Wiki und Blog" #: plinth/modules/ikiwiki/__init__.py:48 -#, fuzzy -#| msgid "" -#| "ikiwiki is a simple wiki and blog application. It supports several " -#| "lightweight markup languages, including Markdown, and common blogging " -#| "functionality such as comments and RSS feeds. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -"ikiwiki ist eine einfache Wiki- und Blog-Anwendung. Sie unterstützt mehrere " -"einfache Markup-Sprachen wie Markdown und übliche Blogging-Funktionen wie " -"Kommentare und RSS-Feeds. Wenn aktiviert, stehen die Blogs und Wikis unter " -"/ikiwiki bereit (nach " -"Erstellung)." +"ikiwiki ist eine einfache Wiki- und Blog-Anwendung. Es unterstützt mehrere " +"einfache Markup-Sprachen, einschließlich Markdown, und gemeinsame Blogging-" +"Funktionalität wie Kommentare und RSS-Feeds." #: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format @@ -2880,10 +2862,8 @@ msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" #: plinth/modules/minidlna/__init__.py:43 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Mumble Voice Chat Server" +msgstr "Einfacher Medienserver" #: plinth/modules/minidlna/__init__.py:46 msgid "" @@ -2895,14 +2875,21 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA ist eine einfache Medienserver-Software mit dem Ziel, vollständig " +"mit DLNA/UPnP-AV-Clients kompatibel zu sein. Der MiniDNLA-Daemon stellt " +"Mediendateien (Musik, Bilder und Videos) für Clients in einem Netzwerk " +"bereit. DNLA/UPnP ist ein Nullkonfigurationsprotokoll und entspricht jedem " +"Gerät, das die DLNA-Zertifizierung übergibt, wie tragbare Mediaplayer, " +"Smartphones, Fernseher und Gaming-Systeme (wie PS3 und Xbox 360) oder " +"Anwendungen wie Totem und Kodi." #: plinth/modules/minidlna/__init__.py:58 msgid "Media streaming server" -msgstr "" +msgstr "Medien-Streaming-Server" #: plinth/modules/minidlna/forms.py:30 msgid "Media Files Directory" -msgstr "" +msgstr "Verzeichnis für Mediendateien" #: plinth/modules/minidlna/forms.py:31 msgid "" @@ -2911,6 +2898,12 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"Verzeichnis, in dem MiniDLNA Server nach Inhalten sucht. Alle " +"Unterverzeichnisse davon werden ebenfalls nach Mediendateien durchsucht. " +"Wenn Sie die Standardeinstellung ändern, stellen Sie sicher, dass das neue " +"Verzeichnis vorhanden und für den Benutzer \"minidlna\" lesbar ist. Alle " +"Benutzermedienverzeichnisse (\"/ home / username /\") funktionieren " +"normalerweise." #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" From 1428b3ebefc2c8ebf440000278027a97b90e5c87 Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Sat, 21 Dec 2019 18:10:01 +0000 Subject: [PATCH 07/43] Translated using Weblate (Swedish) Currently translated at 100.0% (1141 of 1141 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 96 ++++++++++++-------------- 1 file changed, 45 insertions(+), 51 deletions(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index aac7d84f5..1078e76dc 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-12-16 22:57+0000\n" +"PO-Revision-Date: 2019-12-22 20:21+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -676,16 +676,16 @@ msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" +"Cockpit kräver att du öppnar den via ett domännamn. Det kommer inte att " +"fungera när de nås med en IP-adress som en del av webbadressen." #: plinth/modules/cockpit/templates/cockpit.html:26 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Kopplingspunkt" +msgstr "Tillgång" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." -msgstr "" +msgstr "Cockpit fungerar bara vid åtkomst med följande webbadresser." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -696,6 +696,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Här kan du ställa in några allmänna konfigurationsalternativ som värdnamn, " +"domännamn, webserver hemsida etc." #: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 @@ -2811,10 +2813,8 @@ msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" #: plinth/modules/minidlna/__init__.py:43 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Server för Mumble röstchatt" +msgstr "Enkel mediaserver" #: plinth/modules/minidlna/__init__.py:46 msgid "" @@ -2826,14 +2826,20 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA är en enkel Media serverprogramvara, med syfte att vara helt " +"kompatibel med DLNA/UPnP-AV-klienter. MiniDNLA-demonen betjänar mediefiler (" +"musik, bilder och video) till klienter i ett nätverk. DNLA/UPnP är Zero " +"Configuration Protocol och är kompatibel med alla enheter som passerar DLNA-" +"certifiering som bärbara mediaspelare, smartphones, TV-apparater och " +"spelsystem (såsom PS3 och Xbox 360) eller applikationer som totem och Kodi." #: plinth/modules/minidlna/__init__.py:58 msgid "Media streaming server" -msgstr "" +msgstr "Media Streaming Server" #: plinth/modules/minidlna/forms.py:30 msgid "Media Files Directory" -msgstr "" +msgstr "Media-filer katalog" #: plinth/modules/minidlna/forms.py:31 msgid "" @@ -2842,30 +2848,35 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"Katalog som MiniDLNA-servern kommer att läsa för innehåll. Alla " +"underkataloger i detta kommer också att skannas för mediefiler. Om du ändrar " +"standardvärdet se till att den nya katalogen finns och som är läsbar från \"" +"minidlna\"-användaren. Alla användar mediekataloger (\"/Home/username/\") " +"kommer vanligtvis att fungera." #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" -msgstr "" +msgstr "Vlc" #: plinth/modules/minidlna/manifest.py:64 msgid "kodi" -msgstr "" +msgstr "Kodi" #: plinth/modules/minidlna/manifest.py:103 msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:114 msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/views.py:57 msgid "Specified directory does not exist." -msgstr "" +msgstr "Den angivna katalogen finns inte." #: plinth/modules/minidlna/views.py:63 msgid "Updated media directory" -msgstr "" +msgstr "Uppdaterad mediekatalog" #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 @@ -3110,16 +3121,17 @@ msgstr "" "dator- och Android-enheter." #: plinth/modules/mumble/forms.py:31 -#, fuzzy -#| msgid "SSH server password" msgid "Set SuperUser Password" -msgstr "SSH server lösenord" +msgstr "Ange SuperUser lösenord" #: plinth/modules/mumble/forms.py:34 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." msgstr "" +"Valfri. Lämna det här fältet tomt om du vill behålla det aktuella " +"lösenordet. SuperUser lösenord kan användas för att hantera behörigheter i " +"Mumble." #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" @@ -3130,10 +3142,8 @@ msgid "Mumblefly" msgstr "Mumblefly" #: plinth/modules/mumble/views.py:57 -#, fuzzy -#| msgid "Password changed successfully." msgid "SuperUser password successfully updated." -msgstr "Lösenordet har ändrats." +msgstr "SuperUser lösenord har uppdaterats." #: plinth/modules/names/__init__.py:37 msgid "Name Services" @@ -5390,50 +5400,40 @@ msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." #: plinth/modules/storage/forms.py:75 -#, fuzzy -#| msgid "Invalid repository name." msgid "Invalid directory name." -msgstr "Ogiltigt respository namn." +msgstr "Ogiltigt katalognamn." #: plinth/modules/storage/forms.py:91 msgid "Directory does not exist." -msgstr "" +msgstr "Katalogen finns inte." #: plinth/modules/storage/forms.py:93 -#, fuzzy -#| msgid "Download directory" msgid "Path is not a directory." -msgstr "Ladda ner katalog" +msgstr "Sökvägen är inte en katalog." #: plinth/modules/storage/forms.py:96 -#, fuzzy -#| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." -msgstr "Enheten monteras av en annan användare." +msgstr "Katalogen är inte läsbar av användaren." #: plinth/modules/storage/forms.py:99 msgid "Directory is not writable by the user." -msgstr "" +msgstr "Katalogen är inte skrivbar av användaren." #: plinth/modules/storage/forms.py:104 -#, fuzzy -#| msgid "Download directory" msgid "Directory" -msgstr "Ladda ner katalog" +msgstr "Katalog" #: plinth/modules/storage/forms.py:107 msgid "Subdirectory (optional)" -msgstr "" +msgstr "Underkatalog (valfritt)" #: plinth/modules/storage/forms.py:154 -#, fuzzy -#| msgid "Samba" msgid "Samba share" -msgstr "Samba" +msgstr "Samba dela" #: plinth/modules/storage/forms.py:155 msgid "Other directory (specify below)" -msgstr "" +msgstr "Annan katalog (specificera nedan)" #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" @@ -5739,23 +5739,17 @@ msgstr "" "den här noden. Detta hjälper andra att kringgå censur." #: plinth/modules/tor/forms.py:118 -#, fuzzy -#| msgid "Enable Tor Onion Service" msgid "Enable Tor Hidden Service" -msgstr "Aktivera Tor Onion service" +msgstr "Aktivera Tor Hidden service" #: plinth/modules/tor/forms.py:120 -#, fuzzy, python-brace-format -#| msgid "" -#| "An onion service will allow {box_name} to provide selected services (such " -#| "as wiki or chat) without revealing its location. Do not use this for " -#| "strong anonymity yet." +#, python-brace-format msgid "" "A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -"En onion tjänst kommer att tillåta {box_name} att tillhandahålla utvalda " +"En dold tjänst kommer att tillåta {box_name} att tillhandahålla utvalda " "tjänster (till exempel wiki eller chatt) utan att avslöja dess plats. Använd " "inte detta för stark anonymitet ännu." From cc6208e25fa7d15e3f4fbaf794a262fdc08fa2d6 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 24 Dec 2019 23:54:41 +0000 Subject: [PATCH 08/43] Translated using Weblate (Greek) Currently translated at 5.9% (67 of 1141 strings) --- plinth/locale/el/LC_MESSAGES/django.po | 149 +++++++++++++++---------- 1 file changed, 89 insertions(+), 60 deletions(-) diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 4d3306de2..b2d02d5db 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -8,106 +8,114 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2019-12-26 13:21+0000\n" +"Last-Translator: Nektarios Katakis \n" +"Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" -msgstr "" +msgstr "Πηγή της σελίδας" #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" +"Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη διεύθυνση " +"{listen_address}:{port}" #: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" -msgstr "" +msgstr "Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη θύρα {port}" #: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" -msgstr "" +msgstr "Πρόσβαση διεύθυνσης {url} στο πρωτόκολλο tcp {kind}" #: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" -msgstr "" +msgstr "Πρόσβαση στη διεύθυνση URL {url}" #: plinth/action_utils.py:442 #, python-brace-format msgid "Connect to {host}:{port}" -msgstr "" +msgstr "Συνδεθείτε στη διεύθυνση {host}:{port}" #: plinth/action_utils.py:444 #, python-brace-format msgid "Cannot connect to {host}:{port}" -msgstr "" +msgstr "Δεν είναι δυνατή η σύνδεση στη διεύθυνση {host}:{port}" #: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" -msgstr "" +msgstr "Freedombox" #: plinth/forms.py:39 msgid "Enable application" -msgstr "" +msgstr "Ενεργοποίηση εφαρμογής" #: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" +"Επιλέξτε ένα όνομα υπηρεσίας (DNS) για να χρησιμοποιηθεί με αυτή την εφαρμογή" #: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" +"Προειδοποίηση! Η εφαρμογή ενδέχεται να μην λειτουργεί σωστά, εάν το όνομα " +"υπηρεσίας (DNS) αλλάξει αργότερα." #: plinth/forms.py:64 msgid "Language" -msgstr "" +msgstr "Γλώσσα" #: plinth/forms.py:65 msgid "Language to use for presenting this web interface" -msgstr "" +msgstr "Επιλέξτε γλώσσα που θα χρησιμοποιηθεί στη συγκεκριμένη ιστοσελίδα" #: plinth/forms.py:72 msgid "Use the language preference set in the browser" -msgstr "" +msgstr "Χρήση της προεπιλεγμένης γλώσσας του περιηγητή διαδικτύου" #: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." -msgstr "" +msgstr "Η εφαρμογή εγκαταστάθηκε." #: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" -msgstr "" +msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {string} {details}" #: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" -msgstr "" +msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}" #: plinth/modules/apache/__init__.py:51 #: plinth/modules/monkeysphere/templates/monkeysphere.html:88 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:60 msgid "Web Server" -msgstr "" +msgstr "Διακομιστής Διαδικτύου (Web Server)" #: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" -msgstr "" +msgstr "{box_name} Εφαρμογή Διαδικτύου (Πλίνθος)" #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" -msgstr "" +msgstr "Εντοπισμός υπηρεσίας" #: plinth/modules/avahi/__init__.py:50 #, python-brace-format @@ -119,208 +127,229 @@ msgid "" "disabled to improve security especially when connecting to a hostile local " "network." msgstr "" +"Ο εντοπισμός υπηρεσιών επιτρέπει σε άλλες συσκευές του δικτύου να " +"ανακαλύπτουν το {box_name} και τις υπηρεσίες που εκτελούνται σε αυτό. " +"Επιτρέπει επίσης στο {box_name} να ανακαλύπτει άλλες συσκευές και υπηρεσίες " +"που εκτελούνται στο τοπικό σας δίκτυο. Ο εντοπισμός υπηρεσιών δεν είναι " +"απαραίτητος και λειτουργεί μόνο σε εσωτερικά δίκτυα. Μπορεί να " +"απενεργοποιηθεί για να βελτιωθεί η ασφάλεια, ειδικά όταν συνδέεστε σε ένα " +"εχθρικό τοπικό δίκτυο." #: plinth/modules/avahi/__init__.py:77 msgid "Local Network Domain" -msgstr "" +msgstr "Τοπικός τομέας δικτύου" #: plinth/modules/backups/__init__.py:40 msgid "Backups" -msgstr "" +msgstr "Αντίγραφα ασφαλείας" #: plinth/modules/backups/__init__.py:45 msgid "Backups allows creating and managing backup archives." msgstr "" +"Τα αντίγραφα ασφαλείας επιτρέπουν τη δημιουργία και τη διαχείριση εφεδρικών " +"αρχείων (backups)." #: plinth/modules/backups/forms.py:48 #, python-brace-format msgid "{app} (No data to backup)" -msgstr "" +msgstr "{app} (Δεν υπάρχουν δεδομένα για δημιουργία αντιγράφων ασφαλείας)" #: plinth/modules/backups/forms.py:67 msgid "Included apps" -msgstr "" +msgstr "Συμπεριλαμβανόμενες εφαρμογές" #: plinth/modules/backups/forms.py:67 msgid "Apps to include in the backup" -msgstr "" +msgstr "Εφαρμογές που θα συμπεριληφθούν στο αντίγραφο ασφαλείας" #: plinth/modules/backups/forms.py:81 msgid "Select the apps you want to restore" -msgstr "" +msgstr "Επιλέξτε τις εφαρμογές που θέλετε να επαναφέρετε" #: plinth/modules/backups/forms.py:94 msgid "Upload File" -msgstr "" +msgstr "Ανέβασμα αρχείου" #: plinth/modules/backups/forms.py:96 msgid "Backup files have to be in .tar.gz format" -msgstr "" +msgstr "Τα εφεδρικά αρχεία πρέπει να είναι σε μορφή. tar. gz" #: plinth/modules/backups/forms.py:97 msgid "Select the backup file you want to upload" -msgstr "" +msgstr "Επιλέξτε το εφεδρικό αρχείο που θέλετε να ανεβάσετε" #: plinth/modules/backups/forms.py:103 msgid "Repository path format incorrect." -msgstr "" +msgstr "Εσφαλμένο μονοπατι αποθετηρίου (repository)." #: plinth/modules/backups/forms.py:110 #, python-brace-format msgid "Invalid username: {username}" -msgstr "" +msgstr "Μη έγκυρο όνομα χρήστη: {username}" #: plinth/modules/backups/forms.py:120 #, python-brace-format msgid "Invalid hostname: {hostname}" -msgstr "" +msgstr "Μη έγκυρο όνομα υπολογιστή: {hostname}" #: plinth/modules/backups/forms.py:124 #, python-brace-format msgid "Invalid directory path: {dir_path}" -msgstr "" +msgstr "Εσφαλμένο μονοπάτι φακέλου: {dir_path}" #: plinth/modules/backups/forms.py:130 msgid "Encryption" -msgstr "" +msgstr "Κρυπτογράφηση" #: plinth/modules/backups/forms.py:131 msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" +"\"Κλειδί στο αποθετήριο\" σημαίνει ότι ένα κλειδί που προστατεύεται με " +"κωδικό πρόσβασης αποθηκεύεται με το εφεδρικό αρχείο (backup)." #: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" -msgstr "" +msgstr "Κωδικός" #: plinth/modules/backups/forms.py:136 msgid "Passphrase; Only needed when using encryption." -msgstr "" +msgstr "Κωδικός πρόσβασης. Απαιτείται μόνο όταν χρησιμοποιείται κρυπτογράφηση." #: plinth/modules/backups/forms.py:139 msgid "Confirm Passphrase" -msgstr "" +msgstr "Επιβεβαίωση κωδικού" #: plinth/modules/backups/forms.py:139 msgid "Repeat the passphrase." -msgstr "" +msgstr "Επιβεβαίωση κωδικού." #: plinth/modules/backups/forms.py:150 msgid "The entered encryption passphrases do not match" -msgstr "" +msgstr "Οι εισηγμένοι κωδικοί κρυπτογράφησης δεν ταιριάζουν" #: plinth/modules/backups/forms.py:154 msgid "Passphrase is needed for encryption." -msgstr "" +msgstr "Απαιτείται κωδικός για την κρυπτογράφηση." #: plinth/modules/backups/forms.py:189 msgid "Select Disk or Partition" -msgstr "" +msgstr "Επιλέξτε Δίσκο ή Διαμέρισμα του δίσκου" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" msgstr "" +"Τα εφεδρικά αρχεία ασφαλείας θα αποθηκευτούν στον κατάλογο FreedomBoxBackups" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" -msgstr "" +msgstr "Μονοπάτι αποθετηρίου SSH" #: plinth/modules/backups/forms.py:200 msgid "" "Path of a new or existing repository. Example: user@host:~/path/to/repo/" msgstr "" +"Το μονοπάτι από ένα νέο ή ένα υπάρχον αποθετήριο. Παράδειγμα: " +"χρήστης@υπολογιστής:~/μονοπάτι/για/το/αποθετήριο/" #: plinth/modules/backups/forms.py:204 msgid "SSH server password" -msgstr "" +msgstr "Κωδικός πρόσβασης διακομιστή SSH" #: plinth/modules/backups/forms.py:205 msgid "" "Password of the SSH Server.
SSH key-based authentication is not yet " "possible." msgstr "" +"Κωδικός πρόσβασης του διακομιστή SSH.
Ο έλεγχος ταυτότητας με κλειδί " +"SSH δεν είναι ακόμα δυνατός." #: plinth/modules/backups/forms.py:224 msgid "Remote backup repository already exists." -msgstr "" +msgstr "Το απομακρυσμένο αποθετήριο εφεδρικών αρχείων υπάρχει ήδη." #: plinth/modules/backups/forms.py:230 msgid "Select verified SSH public key" -msgstr "" +msgstr "Επιλογή εξακριβωμένου δημόσιου κλειδιού SSH" #: plinth/modules/backups/repository.py:48 msgid "" "Connection refused - make sure you provided correct credentials and the " "server is running." msgstr "" +"Η σύνδεση απορρίφθηκε - βεβαιωθείτε ότι έχετε δώσει τα σωστά διαπιστευτήρια " +"και ότι ο διακομιστής είναι σε λειτουργία." #: plinth/modules/backups/repository.py:55 msgid "Connection refused" -msgstr "" +msgstr "Η σύνδεση απορρίφθηκε" #: plinth/modules/backups/repository.py:62 msgid "Repository not found" -msgstr "" +msgstr "Το αποθετήριο δεν βρέθηκε" #: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" -msgstr "" +msgstr "Λανθασμένος κωδικός κρυπτογράφησης" #: plinth/modules/backups/repository.py:72 msgid "SSH access denied" -msgstr "" +msgstr "Η πρόσβαση SSH απορρίφθηκε" #: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" +"Η διαδρομή του αποθετηρίου δεν είναι ούτε κενή ούτε είναι ένα υπάρχον " +"αποθετήριο εφεδρικών αρχείων." #: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." -msgstr "" +msgstr "Το υπάρχον αποθετήριο δεν είναι κρυπτογραφημένο." #: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" -msgstr "" +msgstr "Αποθηκευτικός χώρος {box_name}" #: plinth/modules/backups/templates/backups.html:45 #: plinth/modules/backups/views.py:77 msgid "Create a new backup" -msgstr "" +msgstr "Δημιουργία νέου εφεδρικού αρχείου" #: plinth/modules/backups/templates/backups.html:49 msgid "Create Backup" -msgstr "" +msgstr "Δημιουργία εφεδρικού αρχείου" #: plinth/modules/backups/templates/backups.html:52 msgid "Upload and restore a backup archive" -msgstr "" +msgstr "Ανεβάστε και επαναφέρετε ένα εφεδρικό αρχείο" #: plinth/modules/backups/templates/backups.html:56 msgid "Upload and Restore" -msgstr "" +msgstr "Αποστολή και επαναφορά" #: plinth/modules/backups/templates/backups.html:59 msgid "Add a backup location" -msgstr "" +msgstr "Προσθήκη τοποθεσίας εφεδρικών αρχείων" #: plinth/modules/backups/templates/backups.html:63 msgid "Add Backup Location" -msgstr "" +msgstr "Προσθήκη τοποθεσίας εφεδρικών αρχείων" #: plinth/modules/backups/templates/backups.html:66 msgid "Add a remote backup location" -msgstr "" +msgstr "Προσθήκη απομακρυσμένης τοποθεσίας εφεδρικών αρχείων" #: plinth/modules/backups/templates/backups.html:70 +#, fuzzy msgid "Add Remote Backup Location" -msgstr "" +msgstr "Προσθήκη απομακρυσμένης τοποθεσίας εφεδρικών αρχείων" #: plinth/modules/backups/templates/backups.html:73 msgid "Existing Backups" -msgstr "" +msgstr "Υπάρχοντα εφεδρικά αρχεία" #: plinth/modules/backups/templates/backups_add_remote_repository.html:34 #, python-format From 35c2b225e1dec27ba70988c79c2c32d1f055391d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Doma=20Gerg=C5=91?= Date: Tue, 24 Dec 2019 20:04:21 +0000 Subject: [PATCH 09/43] Translated using Weblate (Hungarian) Currently translated at 91.8% (1048 of 1141 strings) --- plinth/locale/hu/LC_MESSAGES/django.po | 62 +++++++++++++------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 88936b49d..0699710bb 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-11-06 06:04+0000\n" +"PO-Revision-Date: 2019-12-26 13:21+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -471,6 +471,8 @@ msgid "" "Could not reach SSH host %(hostname)s. Please verify that the host is up and " "accepting connections." msgstr "" +"Az SSH állomás %(hostname)s nem érhető el. Ellenőrizd hogy a célállomás " +"üzemel és fogadhat kapcsolatokat." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:43 #, python-format @@ -478,6 +480,8 @@ msgid "" "The authenticity of SSH host %(hostname)s could not be established. The host " "advertises the following SSH public keys. Please verify any one of them." msgstr "" +"Az SSH állomás %(hostname)s hitelessége nem állapítható meg. A célállomás az " +"alábbi SSH nyilvános kulcsokat hirdette ki. Kérlek, igazold valamelyiket." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:55 msgid "How to verify?" @@ -660,35 +664,31 @@ msgstr "" "terminál szintén elérhető a konzolos műveletekhez." #: plinth/modules/cockpit/__init__.py:59 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /" -#| "_cockpit/ path on the web server. It can be accessed by any user on {box_name} belonging to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Ha engedélyezett, a Cockpit elérhető lesz a webkiszolgáló /_cockpit/ útvonalán. Használhatja majd a {box_name} eszköz " -"bármely adminisztrátori csoportba tartozó felhasználója." +"Használhatja majd a {box_name} eszköz bármely adminisztrátori csoportba " +"tartozó felhasználója." #: plinth/modules/cockpit/__init__.py:63 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" +"A Cockpit megköveteli, hogy a domain néven keresztül érd el. Nem fog működni " +"ha az URL részeként az IP címmel érik el." #: plinth/modules/cockpit/templates/cockpit.html:26 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Hozzáférési pont" +msgstr "Hozzáférés" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." msgstr "" +"A Cockpit csak akkor fog működni, ha az alábbi URL-ek valamelyikével " +"történik a hozzáférés." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -699,6 +699,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Itt beállíthatsz néhány általános konfigurációs beállítást, például " +"gazdagépnév, domain név, webszerver kezdőoldala stb." #: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 @@ -961,19 +963,12 @@ msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge egy webes felülettel rendelkező BitTorrent kliens." #: plinth/modules/deluge/__init__.py:47 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. The default password is " -#| "'deluge', but you should log in and change it immediately after enabling " -#| "this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Ha engedélyezett, a Deluge webes kliens elérhető lesz a webszerver /deluge útvonalán. Az alapértelmezett jelszó 'deluge', de a " -"szolgáltatás engedélyezése után jelentkezz be és azonnal változtasd meg." +"Az alapértelmezett jelszó 'deluge', de a szolgáltatás engedélyezése után " +"jelentkezz be és azonnal változtasd meg." #: plinth/modules/deluge/__init__.py:51 #: plinth/modules/transmission/__init__.py:57 @@ -1581,22 +1576,19 @@ msgstr "" "tűzfalban szintén le lesz tiltva." #: plinth/modules/first_boot/forms.py:29 -#, fuzzy, python-brace-format -#| msgid "" -#| "Enter the secret generated during FreedomBox installation. This secret " -#| "can also be obtained from the file /var/lib/plinth/firstboot-wizard-secret" +#, python-brace-format msgid "" "Enter the secret generated during FreedomBox installation. This secret can " "also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" "wizard-secret\" on your {box_name}" msgstr "" "Add meg a FreedomBox telepítése során létrehozott titkos kulcsot. Ezt a " -"kulcsot ebben a fájlban is megtalálhatod: /var/lib/plinth/firstboot-wizard-" -"secret" +"kulcsot ennek a parancsnak a kiadásával is megszerezheted a saját {box_name} " +"eszközödön: \"sudo cat /var/lib/plinth/firstboot-wizard-secret\"" #: plinth/modules/first_boot/forms.py:34 msgid "Firstboot Wizard Secret" -msgstr "" +msgstr "Telepítő varázsló titkos kulcsa" #: plinth/modules/first_boot/templates/firstboot_complete.html:26 msgid "Setup Complete!" @@ -1646,12 +1638,22 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"A Git egy elosztott verziókezelő rendszer a szoftverfejlesztés során a " +"forráskódban történt változások követésére. A Gitweb webes felületet " +"biztosít a Git tárolóihoz. Böngészheted az előzményeket és a forráskódok " +"tartalmát, a keresés használatával megtalálhatod a releváns commitot és " +"kódot. Továbbá klónozhatsz tárolókat és feltöltheted a kódmódosításokat egy " +"parancssoros Git klienssel vagy a többféle grafikus kliensek valamelyikével. " +"És megoszthatod a kódodat az emberekkel szerte a világon." #: plinth/modules/gitweb/__init__.py:57 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Ha szeretnél többet megtudni a Git használatáról, akkor tekintsd meg a Git gyorstalpalót " +"(angolul)." #: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" From 863eb077d938928356325db9bd697b7d6fbf1e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 25 Dec 2019 13:05:16 +0000 Subject: [PATCH 10/43] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 90.0% (1027 of 1141 strings) --- plinth/locale/nb/LC_MESSAGES/django.po | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 59bb0657a..2c4de351c 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -16,7 +16,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-11-12 08:04+0000\n" +"PO-Revision-Date: 2019-12-26 13:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1774,8 +1774,9 @@ msgid "Delete repository %(repo.name)s" msgstr "Slette bruker %(username)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:83 +#, fuzzy msgid "Cloning..." -msgstr "" +msgstr "Kloner…" #: plinth/modules/gitweb/templates/gitweb_configure.html:89 #, fuzzy, python-format @@ -2952,8 +2953,9 @@ msgid "totem" msgstr "" #: plinth/modules/minidlna/views.py:57 +#, fuzzy msgid "Specified directory does not exist." -msgstr "" +msgstr "Angitt mappe finnes ikke" #: plinth/modules/minidlna/views.py:63 msgid "Updated media directory" @@ -4717,7 +4719,7 @@ msgstr "" #: plinth/modules/samba/__init__.py:43 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:50 msgid "" From fc69c8418f759e25a774273ad909ccbf8ff74cb3 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 26 Dec 2019 13:36:44 -0500 Subject: [PATCH 11/43] debian: Update French debconf translation (Closes: #947386) Thanks to Jean-Pierre Giraud for the patch. Signed-off-by: James Valleroy --- debian/po/fr.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/po/fr.po b/debian/po/fr.po index a2c7341e2..b8f085bdb 100644 --- a/debian/po/fr.po +++ b/debian/po/fr.po @@ -1,14 +1,14 @@ # Translation of plinth debconf templates to French # Copyright (C) 2018 FreedomBox packaging team # This file is distributed under the same license as the plinth package. -# Jean-Pierre Giraud , 2018. # +# Jean-Pierre Giraud , 2018, 2019. msgid "" msgstr "" "Project-Id-Version: plinth\n" "Report-Msgid-Bugs-To: plinth@packages.debian.org\n" "POT-Creation-Date: 2019-11-18 18:11-0500\n" -"PO-Revision-Date: 2018-07-30 23:19+0100\n" +"PO-Revision-Date: 2019-12-16 10:23+0100\n" "Last-Translator: Jean-Pierre Giraud \n" "Language-Team: French \n" "Language: fr_FR\n" @@ -27,7 +27,6 @@ msgstr "Phrase secrète du premier assistant de FreedomBox - ${secret}" #. Type: note #. Description #: ../templates:1001 -#, fuzzy #| msgid "" #| "Please save this string. You will be asked to enter this in the first " #| "screen after you launch the FreedomBox interface. In case you lose it, " @@ -37,6 +36,7 @@ msgid "" "first screen after you launch the FreedomBox web interface. In case you lose " "it, you can retrieve it by running the following command:" msgstr "" -"Veuillez retenir cette chaîne. Le premier écran après le chargement de " -"l'interface de FreedomBox vous la demandera. Si vous l'avez oubliée, vous " -"pourrez la retrouver dans le fichier /var/lib/plinth/firstboot-wizard-secret." +"Veuillez noter cette phrase secrète. Le premier écran après le chargement de " +"l'interface web de FreedomBox vous la demandera. Si vous l'avez oubliée, vous " +"pourrez la récupérer en exécutant la commande suivante :" + From 962e5b488f9d0425c50eb359c0622ac544ddaf80 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Thu, 19 Dec 2019 08:36:02 +0200 Subject: [PATCH 12/43] storage: Tests for the directory validation action Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- .gitlab-ci.yml | 2 +- conftest.py | 7 +++ plinth/modules/storage/tests/test_storage.py | 65 ++++++++++++++++++-- 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db2b52ff5..ff5bbea51 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ run-unit-tests: - cp -r . /home/tester/plinth - chown -R tester:tester /home/tester/plinth - su -c "cd ~/plinth; python3 -m flake8 --exclude actions/domainname-change,actions/dynamicdns,actions/hostname-change,actions/networks plinth actions/*" tester - - su -c "cd ~/plinth; py.test-3 --cov=plinth --cov-report=html:/home/tester/plinth/htmlcov --cov-report=term" tester + - su -c "cd ~/plinth;PYTHONPATH='.' py.test-3 --cov=plinth --cov-report=html:/home/tester/plinth/htmlcov --cov-report=term" tester - cp -r /home/tester/plinth/htmlcov test-coverage-report coverage: '/^TOTAL\s+.*\s+(\d+\.\d+%)$/' diff --git a/conftest.py b/conftest.py index 3d0f57bd8..d4606b9b2 100644 --- a/conftest.py +++ b/conftest.py @@ -71,6 +71,13 @@ def fixture_needs_root(): pytest.skip('Needs to be root') +@pytest.fixture(name='needs_not_root', scope='session') +def fixture_needs_not_root(): + """Skip test if running in root mode.""" + if os.geteuid() == 0: + pytest.skip('Needs not to be root') + + @pytest.fixture(name='needs_sudo') def fixture_needs_sudo(): """Skip test if sudo command is not available.""" diff --git a/plinth/modules/storage/tests/test_storage.py b/plinth/modules/storage/tests/test_storage.py index 4edeec01e..3e8e10461 100644 --- a/plinth/modules/storage/tests/test_storage.py +++ b/plinth/modules/storage/tests/test_storage.py @@ -36,6 +36,7 @@ def _get_partition_device(device, partition_number): class Disk(): """Context manager to create/destroy a disk.""" + def __init__(self, test_case, size, disk_info, file_system_info=None): """Initialize the context manager object.""" self.size = size @@ -119,6 +120,7 @@ class Disk(): class TestActions: """Test all actions related to storage.""" + @pytest.mark.usefixtures('needs_root') def test_simple_case(self): """Test a simple with no complications""" @@ -192,7 +194,7 @@ class TestActions: def assert_free_space(self, partition_number, space=True): """Verify that free is available/not available after a partition.""" device = _get_partition_device(self.device, partition_number) - result = self.run_action( + result = self.check_action( ['storage', 'is-partition-expandable', device]) assert result == space @@ -200,20 +202,26 @@ class TestActions: """Expand a partition.""" self.assert_aligned(partition_number) device = _get_partition_device(self.device, partition_number) - result = self.run_action(['storage', 'expand-partition', device]) + result = self.check_action(['storage', 'expand-partition', device]) assert result == success self.assert_aligned(partition_number) @staticmethod - def run_action(action_command): - """Run an action and return success/failure result.""" + def call_action(action_command, **kwargs): + """Call the action script.""" current_directory = os.path.dirname(os.path.realpath(__file__)) action = os.path.join(current_directory, '..', '..', '..', '..', 'actions', action_command[0]) action_command[0] = action + kwargs['stdout'] = kwargs.get('stdout', subprocess.DEVNULL) + kwargs['stderr'] = kwargs.get('stderr', subprocess.DEVNULL) + kwargs['check'] = kwargs.get('check', True) + return subprocess.run(action_command, **kwargs) + + def check_action(self, action_command): + """Return success/failure result of the action command.""" try: - subprocess.run(action_command, stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, check=True) + self.call_action(action_command) return True except subprocess.CalledProcessError: return False @@ -238,3 +246,48 @@ class TestActions: command = ['e2fsck', '-n', device] subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True) + + def assert_validate_directory(self, path, error, check_writable=False): + """Perform directory validation checks.""" + action_command = ['storage', 'validate-directory', '--path', path] + if check_writable: + action_command += ['--check-writable'] + proc = self.call_action(action_command, stderr=subprocess.PIPE, + stdout=subprocess.PIPE) + output = proc.stdout.decode() + if 'ValidationError' in output: + error_nr = output.strip().split()[1] + assert error_nr == error + else: + assert output == error + + @pytest.mark.usefixtures('needs_not_root') + @pytest.mark.parametrize('directory', [{ + 'path': '/missing', + 'error': '1' + }, { + 'path': '/etc/os-release', + 'error': '2' + }, { + 'path': '/root', + 'error': '3' + }, { + 'path': '/', + 'error': '' + }]) + def test_validate_directory(self, directory): + """Test that directory validation returns expected output.""" + self.assert_validate_directory(directory['path'], directory['error']) + + @pytest.mark.usefixtures('needs_not_root') + @pytest.mark.parametrize('directory', [{ + 'path': '/', + 'error': '4' + }, { + 'path': '/tmp', + 'error': '' + }]) + def test_validate_directory_writable(self, directory): + """Test that directory writable validation returns expected output.""" + self.assert_validate_directory(directory['path'], directory['error'], + check_writable=True) From aa2aa56c463ca1bd5dc70e42766e3aa81c8d64b0 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Mon, 23 Dec 2019 15:15:51 +0200 Subject: [PATCH 13/43] users: Add tests for the Samba user database Fix: after renaming a user delete old username from the Samba password database Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/users | 17 ++++++++++++----- plinth/modules/users/tests/test_actions.py | 18 +++++++++++++++--- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/actions/users b/actions/users index 3b26f1398..df2737eda 100755 --- a/actions/users +++ b/actions/users @@ -215,8 +215,8 @@ def configure_ldapscripts(): # modify a copy of the config file shutil.copy('/etc/ldapscripts/ldapscripts.conf', LDAPSCRIPTS_CONF) - aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + - augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas( + flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') aug.set('/augeas/load/Shellvars/incl[last() + 1]', LDAPSCRIPTS_CONF) aug.load() @@ -240,6 +240,13 @@ def get_samba_users(): return re.findall(r'USER_(.*)\\0', stdout) +def delete_samba_user(username): + """Delete a Samba user.""" + if username in get_samba_users(): + subprocess.check_call(['smbpasswd', '-x', username]) + disconnect_samba_user(username) + + def disconnect_samba_user(username): """Disconnect a Samba user.""" try: @@ -268,9 +275,7 @@ def subcommand_remove_user(arguments): username = arguments.username groups = get_user_groups(username) - if username in get_samba_users(): - subprocess.check_call(['smbpasswd', '-x', username]) - disconnect_samba_user(username) + delete_samba_user(username) for group in groups: remove_user_from_group(username, group) @@ -286,6 +291,8 @@ def subcommand_rename_user(arguments): new_username = arguments.newusername groups = get_user_groups(old_username) + delete_samba_user(old_username) + for group in groups: remove_user_from_group(old_username, group) diff --git a/plinth/modules/users/tests/test_actions.py b/plinth/modules/users/tests/test_actions.py index 7ad3f60e0..24b441a2c 100644 --- a/plinth/modules/users/tests/test_actions.py +++ b/plinth/modules/users/tests/test_actions.py @@ -23,6 +23,7 @@ it is recommended to run this module with root privileges in a virtual machine. import pathlib import random +import re import string import subprocess @@ -62,6 +63,13 @@ def _get_password_hash(username): return process.stdout.decode().strip().split()[-1] +def _get_samba_users(): + """Get users from the Samba user database.""" + stdout = subprocess.check_output( + ['tdbdump', '/var/lib/samba/private/passdb.tdb']).decode() + return re.findall(r'USER_(.*)\\0', stdout) + + def _try_login_to_ssh(username, password, returncode=0): """Return whether the sshpass returncode matches when trying to login to ssh using the given username and password""" @@ -81,8 +89,8 @@ def _try_login_to_ssh(username, password, returncode=0): def _action_file(): """Return the path to the 'users' actions file.""" current_directory = pathlib.Path(__file__).parent - return str(current_directory / '..' / '..' / '..' / '..' / 'actions' / - 'users') + return str( + current_directory / '..' / '..' / '..' / '..' / 'actions' / 'users') @pytest.fixture(name='disable_restricted_access', autouse=True) @@ -140,7 +148,7 @@ def _create_user(username=None, groups=None): def _delete_user(username): - """Utility to delete an LDAP user""" + """Utility to delete an LDAP and Samba user""" _call_action(['remove-user', username]) @@ -176,6 +184,7 @@ def test_create_user(): username, password = _create_user(groups=['admin', _random_string()]) # assert_can_login_to_console(username, password) assert _try_login_to_ssh(username, password) + assert username in _get_samba_users() with pytest.raises(subprocess.CalledProcessError): _create_user(username) @@ -212,6 +221,7 @@ def test_rename_user(): new_username = _rename_user(old_username) assert _try_login_to_ssh(new_username, password) assert _try_login_to_ssh(old_username, password, returncode=5) + assert old_username not in _get_samba_users() new_groups = _get_user_groups(new_username) old_users_groups = _get_user_groups(old_username) @@ -245,6 +255,8 @@ def test_delete_user(): # Deleted user cannot login to ssh assert _try_login_to_ssh(username, password, returncode=5) + assert username not in _get_samba_users() + def test_delete_non_existent_user(): """Deleting a non-existent user should fail.""" From c9d9d4736b67953e79993852245c1480f88e4004 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 23 Dec 2019 17:59:33 -0500 Subject: [PATCH 14/43] firewall: Support upgrading firewalld to 0.8 Closes #1737. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/firewall/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index c6bf7384b..c2e126cbb 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -81,9 +81,9 @@ def force_upgrade(helper, packages): if 'firewalld' not in packages: return False - # firewalld 0.4.4.6-2 -> 0.6.x + # firewalld 0.6.x -> 0.7.x, 0.6.x -> 0.8.x, 0.7.x -> 0.8.x package = packages['firewalld'] - if Version(package['current_version']) >= Version('0.7') or \ + if Version(package['current_version']) >= Version('0.8') or \ Version(package['new_version']) < Version('0.7'): return False From bc748ed5bb00da92a903c0ab3a9bfd3c6c351eeb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 21 Dec 2019 14:31:23 -0500 Subject: [PATCH 15/43] mldonkey: Add ProtectKernelLogs Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../lib/systemd/system/mldonkey-server.service.d/freedombox.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf b/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf index 5cbb13cee..eacad4017 100644 --- a/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf +++ b/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf @@ -19,6 +19,7 @@ PrivateTmp=yes PrivateUsers=yes ProtectControlGroups=yes ProtectHome=yes +ProtectKernelLogs=yes ProtectKernelModules=yes ProtectKernelTunables=yes ProtectSystem=strict From b4e00d2574f15935ffb4b0d5650a6e53b4c60bcb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 21 Dec 2019 14:48:06 -0500 Subject: [PATCH 16/43] deluge: Use systemd sandboxing features Signed-off-by: James Valleroy [sunil: Remove directive for unused logs directory] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- actions/deluge | 14 ++++++++++++++ plinth/modules/deluge/__init__.py | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/actions/deluge b/actions/deluge index ee7e6bf7b..c35750d05 100755 --- a/actions/deluge +++ b/actions/deluge @@ -38,6 +38,20 @@ ExecStart=bash -c "/usr/bin/deluge-web --base=deluge $(/usr/bin/deluge-web --ver Restart=on-failure User=debian-deluged Group=debian-deluged +LockPersonality=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=yes +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +RestrictRealtime=yes +StateDirectory=deluged +SystemCallArchitectures=native [Install] WantedBy=multi-user.target diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 733375366..e1aab2e4f 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -30,7 +30,7 @@ from plinth.modules.users import register_group from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 3 +version = 4 managed_services = ['deluge-web'] From 1498a9ae83ce78ed382d9901e7fd93cab858b393 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 21 Dec 2019 16:45:46 -0500 Subject: [PATCH 17/43] infinoted: Use systemd sandboxing features Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/infinoted | 25 +++++++++++++++++++++---- plinth/modules/infinoted/__init__.py | 2 +- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/actions/infinoted b/actions/infinoted index f0229e906..7da3c7dd4 100755 --- a/actions/infinoted +++ b/actions/infinoted @@ -94,6 +94,24 @@ After=network.target User=infinoted Group=infinoted ExecStart=/usr/bin/infinoted +ConfigurationDirectory=infinoted +ConfigurationDirectoryMode=0750 +LockPersonality=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +RestrictRealtime=yes +StateDirectory=infinoted +SystemCallArchitectures=native [Install] WantedBy=multi-user.target @@ -130,11 +148,10 @@ def subcommand_setup(_): with open(CONF_PATH, 'w') as file_handle: file_handle.write(CONF) - if not os.path.isfile(SYSTEMD_SERVICE_PATH): - with open(SYSTEMD_SERVICE_PATH, 'w') as file_handle: - file_handle.write(SYSTEMD_SERVICE) + with open(SYSTEMD_SERVICE_PATH, 'w') as file_handle: + file_handle.write(SYSTEMD_SERVICE) - subprocess.check_call(['systemctl', 'daemon-reload']) + subprocess.check_call(['systemctl', 'daemon-reload']) # Create infinoted group if needed. try: diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 3fd97f921..133b209e4 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -31,7 +31,7 @@ from plinth.views import AppView from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 1 +version = 2 managed_services = ['infinoted'] From c91939710b506fbafe4190b8dd5ee7b1d75394a8 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 21 Dec 2019 16:55:50 -0500 Subject: [PATCH 18/43] storage: Add systemd sandboxing features to udiskie service Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../lib/systemd/system/freedombox-udiskie.service | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service b/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service index a905d999c..99dfb5f69 100644 --- a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service +++ b/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service @@ -21,6 +21,18 @@ Documentation=man:udiskie(1) [Service] ExecStart=/usr/bin/udiskie +LockPersonality=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX +RestrictRealtime=yes +SystemCallArchitectures=native [Install] WantedBy=multi-user.target From ddd1abdb8a706c19e00186b6089bfbdeb7011d4a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 21 Dec 2019 17:04:56 -0500 Subject: [PATCH 19/43] upgrades: Add systemd sandboxing features to repository setup service Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../system/freedombox-setup-repositories.service | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service index dfb20a3a7..512b718d4 100644 --- a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service +++ b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service @@ -21,3 +21,15 @@ Description=FreedomBox: Setup software repositories [Service] ExecStart=/usr/share/plinth/actions/upgrades setup-repositories Type=oneshot +LockPersonality=yes +PrivateDevices=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=yes +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +RestrictRealtime=yes +SystemCallArchitectures=native From 592060e057ddf50c8bb0e507652deb53e18f3039 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Sat, 28 Dec 2019 07:55:13 +0000 Subject: [PATCH 20/43] mediawiki: Pass --quick when running update.php By default update.php will pause for 5 seconds before doing anything to remind the user to make a backup before the script runs. Since we're running it in a separate process where the user won't get that opportunity anyways, skip the 5 second delay by passing `--quick`. Reviewed-by: Sunil Mohan Adapa --- actions/mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/mediawiki b/actions/mediawiki index 4f0e45a0c..c12a5eaa9 100755 --- a/actions/mediawiki +++ b/actions/mediawiki @@ -110,7 +110,7 @@ def subcommand_change_password(arguments): def subcommand_update(_): """Run update.php maintenance script when version upgrades happen.""" update_script = os.path.join(MAINTENANCE_SCRIPTS_DIR, 'update.php') - subprocess.check_call(['php', update_script]) + subprocess.check_call(['php', update_script, '--quick']) def subcommand_public_registrations(arguments): From 176e7ecae361fc77d7a5eb6ac186501b3d348109 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 19 Dec 2019 15:07:11 -0800 Subject: [PATCH 21/43] help: Refactor to move app into __init__.py for consistency Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/help/__init__.py | 47 ++++++++++++++++++++++++++++-- plinth/modules/help/help.py | 51 +-------------------------------- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/plinth/modules/help/__init__.py b/plinth/modules/help/__init__.py index 030aaf76a..c1f215a32 100644 --- a/plinth/modules/help/__init__.py +++ b/plinth/modules/help/__init__.py @@ -18,11 +18,52 @@ FreedomBox app for help pages. """ -from . import help # pylint: disable-msg=W0622 -from .help import init +from django.utils.translation import ugettext_lazy as _ -__all__ = ['help', 'init'] +from plinth import menu +from plinth.app import App version = 1 is_essential = True +app = None + + +class HelpApp(App): + """FreedomBox app for showing help.""" + + app_id = 'help' + + def __init__(self): + """Create components for the app.""" + super().__init__() + menu_item = menu.Menu('menu-help', _('Documentation'), None, 'fa-book', + 'help:index', parent_url_name='index') + self.add(menu_item) + menu_item = menu.Menu('menu-help-manual', _('Manual'), None, + 'fa-info-circle', 'help:manual', + parent_url_name='help:index', order=10) + self.add(menu_item) + menu_item = menu.Menu('menu-help-support', _('Get Support'), None, + 'fa-life-ring', 'help:support', + parent_url_name='help:index', order=20) + self.add(menu_item) + menu_item = menu.Menu('menu-help-feedback', _('Submit Feedback'), None, + 'fa-comments', 'help:feedback', + parent_url_name='help:index', order=25) + self.add(menu_item) + menu_item = menu.Menu('menu-help-contribute', _('Contribute'), None, + 'fa-wrench', 'help:contribute', + parent_url_name='help:index', order=30) + self.add(menu_item) + menu_item = menu.Menu('menu-help-about', _('About'), None, 'fa-star', + 'help:about', parent_url_name='help:index', + order=100) + self.add(menu_item) + + +def init(): + """Initialize the Help module""" + global app + app = HelpApp() + app.set_enabled(True) diff --git a/plinth/modules/help/help.py b/plinth/modules/help/help.py index f16893dc9..0316dd26c 100644 --- a/plinth/modules/help/help.py +++ b/plinth/modules/help/help.py @@ -30,57 +30,8 @@ from django.template.response import TemplateResponse from django.urls import reverse from django.utils.translation import get_language_from_request from django.utils.translation import ugettext as _ -from django.utils.translation import ugettext_lazy -from plinth import __version__, actions -from plinth import app as app_module -from plinth import cfg, menu - -app = None - - -class HelpApp(app_module.App): - """FreedomBox app for showing help.""" - - app_id = 'help' - - def __init__(self): - """Create components for the app.""" - super().__init__() - menu_item = menu.Menu('menu-help', ugettext_lazy('Documentation'), - None, 'fa-book', 'help:index', - parent_url_name='index') - self.add(menu_item) - menu_item = menu.Menu('menu-help-manual', ugettext_lazy('Manual'), - None, 'fa-info-circle', 'help:manual', - parent_url_name='help:index', order=10) - self.add(menu_item) - menu_item = menu.Menu('menu-help-support', - ugettext_lazy('Get Support'), None, - 'fa-life-ring', 'help:support', - parent_url_name='help:index', order=20) - self.add(menu_item) - menu_item = menu.Menu('menu-help-feedback', - ugettext_lazy('Submit Feedback'), None, - 'fa-comments', 'help:feedback', - parent_url_name='help:index', order=25) - self.add(menu_item) - menu_item = menu.Menu('menu-help-contribute', - ugettext_lazy('Contribute'), None, 'fa-wrench', - 'help:contribute', parent_url_name='help:index', - order=30) - self.add(menu_item) - menu_item = menu.Menu('menu-help-about', ugettext_lazy('About'), None, - 'fa-star', 'help:about', - parent_url_name='help:index', order=100) - self.add(menu_item) - - -def init(): - """Initialize the Help module""" - global app - app = HelpApp() - app.set_enabled(True) +from plinth import __version__, actions, cfg def index(request): From d9f6928001d6a4d1c4b59ee8961ea2e972e5295b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 11 Dec 2019 17:55:37 -0500 Subject: [PATCH 22/43] app: Introduce API to return a list of all apps Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/app.py | 5 +++++ plinth/tests/test_app.py | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/plinth/app.py b/plinth/app.py index f23ed4f85..cb5eff328 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -49,6 +49,11 @@ class App: """Return an app with given ID.""" return cls._all_apps[app_id] + @classmethod + def list(cls): + """Return a list of all apps.""" + return cls._all_apps.values() + def add(self, component): """Add a component to an app.""" self.components[component.component_id] = component diff --git a/plinth/tests/test_app.py b/plinth/tests/test_app.py index 9f8c73a37..d727a15b3 100644 --- a/plinth/tests/test_app.py +++ b/plinth/tests/test_app.py @@ -62,12 +62,18 @@ def test_app_instantiation(): assert len(app._all_apps) == 1 -def test_get(): +def test_app_get(): """Test that an app can be correctly retrieved.""" app = AppTest() assert App.get(app.app_id) == app +def test_app_list(): + """Test listing all apps.""" + app = AppTest() + assert list(App.list()) == [app] + + def test_app_add(): """Test adding a components to an App.""" app = AppTest() From 50644b02a45899d5e8c191e9e6060480b8463ffb Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 11 Dec 2019 17:57:00 -0500 Subject: [PATCH 23/43] app: Introduce API to run diagnostics on an app Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/app.py | 29 +++++++++++++++++++++++++++++ plinth/tests/test_app.py | 17 +++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/plinth/app.py b/plinth/app.py index cb5eff328..70c027639 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -104,6 +104,24 @@ class App: if not component.is_leader: component.set_enabled(enabled) + def diagnose(self): + """Run diagnostics and return results. + + Return value must be a list of results. Each result is a two-tuple with + first value as user visible description of the test followed by the + result. The test result is a string enumeration from 'failed', 'passed' + and 'error'. + + Results are typically collected by diagnosing each component of the app + and then supplementing the results with any app level diagnostic tests. + + """ + results = [] + for component in self.components.values(): + results.extend(component.diagnose()) + + return results + class Component: """Interface for an app component.""" @@ -121,6 +139,17 @@ class Component: """Run operations to enable the component.""" def disable(self): """Run operations to disable the component.""" + @staticmethod + def diagnose(): + """Run diagnostics and return results. + + Return value must be a list of results. Each result is a two-tuple with + first value as user visible description of the test followed by the + result. The test result is a string enumeration from 'failed', 'passed' + and 'error'. + + """ + return [] class FollowerComponent(Component): diff --git a/plinth/tests/test_app.py b/plinth/tests/test_app.py index d727a15b3..ceebb3df8 100644 --- a/plinth/tests/test_app.py +++ b/plinth/tests/test_app.py @@ -34,6 +34,10 @@ class LeaderTest(FollowerComponent): """Test class for using LeaderComponent in tests.""" is_leader = True + def diagnose(self): + """Return diagnostic results.""" + return [('test-result-' + self.component_id, 'success')] + @pytest.fixture(name='app_with_components') def fixture_app_with_components(): @@ -182,6 +186,13 @@ def test_app_set_enabled(app_with_components): assert app.components['test-leader-1'].is_enabled() +def test_app_diagnose(app_with_components): + """Test running diagnostics on an app.""" + results = app_with_components.diagnose() + assert results == [('test-result-test-leader-1', 'success'), + ('test-result-test-leader-2', 'success')] + + def test_component_initialization(): """Test that component is initialized properly.""" with pytest.raises(ValueError): @@ -192,6 +203,12 @@ def test_component_initialization(): assert not component.is_leader +def test_component_diagnose(): + """Test running diagnostics on component.""" + component = Component('test-component') + assert component.diagnose() == [] + + def test_follower_component_initialization(): """Test that follower component is initialized properly.""" component = FollowerComponent('test-follower-1') From 0d5493dae73081fab50c049287b08b6302d6526b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 11 Dec 2019 22:26:35 -0500 Subject: [PATCH 24/43] apache: Implement diagnostic test for web server component Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- doc/dev/tutorial/components.rst | 8 ++++-- plinth/modules/apache/components.py | 24 ++++++++++++++++- .../modules/apache/tests/test_components.py | 27 ++++++++++++++++++- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/doc/dev/tutorial/components.rst b/doc/dev/tutorial/components.rst index f3e9a8d59..94e2fd95e 100644 --- a/doc/dev/tutorial/components.rst +++ b/doc/dev/tutorial/components.rst @@ -57,14 +57,18 @@ app. Let us do that in our app's class. def __init__(self): ... - webserver = Webserver('webserver-transmission', 'transmission-plinth') + webserver = Webserver('webserver-transmission', 'transmission-plinth' + urls=['https://{host}/transmission']) self.add(webserver) The first argument to instantiate the :class:`~plinth.modules.apache.components.Webserver` class is a unique ID. The second is the name of the Apache2 web server configuration snippet that contains the directives to proxy Transmission web interface via Apache2. We then need to -create the configuration file itself in ``tranmission-freedombox.conf``. +create the configuration file itself in ``tranmission-freedombox.conf``. The +final argument is the list of URLs that the app exposes to the users of the app. +This information is used to check if the URLs are accessible as expected when +the user requests diagnostic tests on the app. .. code-block:: apache diff --git a/plinth/modules/apache/components.py b/plinth/modules/apache/components.py index 7fc22a753..4284c09a8 100644 --- a/plinth/modules/apache/components.py +++ b/plinth/modules/apache/components.py @@ -23,7 +23,7 @@ from plinth import action_utils, actions, app class Webserver(app.LeaderComponent): """Component to enable/disable Apache configuration.""" - def __init__(self, component_id, web_name, kind='config'): + def __init__(self, component_id, web_name, kind='config', urls=None): """Initialize the web server component. component_id should be a unique ID across all components of an app and @@ -37,11 +37,15 @@ class Webserver(app.LeaderComponent): 'module' for configuration in /etc/apache2/mods-available/, 'site' for configuration in /etc/apache2/sites-available/. + urls is a list of URLs over which a HTTP services will be available due + to this component. This list is only used for running diagnostics. + """ super().__init__(component_id) self.web_name = web_name self.kind = kind + self.urls = urls or [] def is_enabled(self): """Return whether the Apache configuration is enabled.""" @@ -58,6 +62,24 @@ class Webserver(app.LeaderComponent): 'apache', ['disable', '--name', self.web_name, '--kind', self.kind]) + def diagnose(self): + """Check if the web path is accessible by clients. + + See :py:meth:`plinth.app.Component.diagnose`. + + """ + results = [] + for url in self.urls: + if '{host}' in url: + results.extend( + action_utils.diagnose_url_on_all(url, + check_certificate=False)) + else: + results.append( + action_utils.diagnose_url(url, check_certificate=False)) + + return results + class Uwsgi(app.LeaderComponent): """Component to enable/disable uWSGI configuration.""" diff --git a/plinth/modules/apache/tests/test_components.py b/plinth/modules/apache/tests/test_components.py index 142195e8d..0c4b3f4d4 100644 --- a/plinth/modules/apache/tests/test_components.py +++ b/plinth/modules/apache/tests/test_components.py @@ -30,13 +30,16 @@ def test_webserver_init(): with pytest.raises(ValueError): Webserver(None, None) - webserver = Webserver('test-webserver', 'test-config', kind='module') + webserver = Webserver('test-webserver', 'test-config', kind='module', + urls=['url1', 'url2']) assert webserver.component_id == 'test-webserver' assert webserver.web_name == 'test-config' assert webserver.kind == 'module' + assert webserver.urls == ['url1', 'url2'] webserver = Webserver('test-webserver', None) assert webserver.kind == 'config' + assert webserver.urls == [] @patch('plinth.action_utils.webserver_is_enabled') @@ -77,6 +80,28 @@ def test_webserver_disable(superuser_run): ]) +@patch('plinth.action_utils.diagnose_url') +@patch('plinth.action_utils.diagnose_url_on_all') +def test_webserver_diagnose(diagnose_url_on_all, diagnose_url): + """Test running diagnostics.""" + def on_all_side_effect(url, check_certificate): + return [('test-result-' + url, 'success')] + + def side_effect(url, check_certificate): + return ('test-result-' + url, 'success') + + diagnose_url_on_all.side_effect = on_all_side_effect + diagnose_url.side_effect = side_effect + webserver = Webserver('test-webserver', 'test-config', + urls=['{host}url1', 'url2']) + results = webserver.diagnose() + assert results == [('test-result-{host}url1', 'success'), + ('test-result-url2', 'success')] + diagnose_url_on_all.assert_has_calls( + [call('{host}url1', check_certificate=False)]) + diagnose_url.assert_has_calls([call('url2', check_certificate=False)]) + + def test_uwsgi_init(): """Test that uWSGI component can be initialized.""" with pytest.raises(ValueError): From 9cc3ddea2c1eef31bdba6a3104ff30988e8713cd Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 11 Dec 2019 22:44:50 -0500 Subject: [PATCH 25/43] daemon: Implement diagnostic test for daemon component Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- doc/dev/tutorial/components.rst | 7 +++++-- plinth/daemon.py | 18 +++++++++++++++++- plinth/tests/test_daemon.py | 22 +++++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/doc/dev/tutorial/components.rst b/doc/dev/tutorial/components.rst index 94e2fd95e..a743aa31a 100644 --- a/doc/dev/tutorial/components.rst +++ b/doc/dev/tutorial/components.rst @@ -26,14 +26,17 @@ our app's class. def __init__(self): ... - daemon = Daemon('daemon-transmission', managed_services[0]) + daemon = Daemon('daemon-transmission', managed_services[0], + listen_ports=[(9091, 'tcp4')]) self.add(daemon) The first argument to instantiate the :class:`~plinth.daemon.Daemon` class is a unique ID. The second is the name of the `systemd `_ unit file which manages -the daemon. +the daemon. The final argument is the list of ports that this daemon listens on. +This information is used to check if the daemon is listening on the expected +ports when the user requests diagnostic tests on the app. Managing web server configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/plinth/daemon.py b/plinth/daemon.py index 6fc733461..352a75a30 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -23,7 +23,8 @@ from plinth import action_utils, actions, app class Daemon(app.LeaderComponent): """Component to manage a background daemon or any systemd unit.""" - def __init__(self, component_id, unit, strict_check=False): + def __init__(self, component_id, unit, strict_check=False, + listen_ports=None): """Initialize a new daemon component. 'component_id' must be a unique string across all apps and components @@ -31,11 +32,17 @@ class Daemon(app.LeaderComponent): 'unit' must the name of systemd unit that this component should manage. + 'listen_ports' is a list of tuples. Each tuple contains the port number + as integer followed by a string with one of the values 'tcp4', 'tcp6', + 'tcp', 'udp4', 'udp6', 'udp' indicating the protocol that the daemon + listens on. This information is used to run diagnostic tests. + """ super().__init__(component_id) self.unit = unit self.strict_check = strict_check + self.listen_ports = listen_ports or [] def is_enabled(self): """Return if the daemon/unit is enabled.""" @@ -54,6 +61,15 @@ class Daemon(app.LeaderComponent): """Return whether the daemon/unit is running.""" return action_utils.service_is_running(self.unit) + def diagnose(self): + """Check if the daemon is listening on expected ports.""" + results = [] + for port in self.listen_ports: + results.append( + action_utils.diagnose_port_listening(port[0], port[1])) + + return results + def app_is_running(app_): """Return whether all the daemons in the app are running.""" diff --git a/plinth/tests/test_daemon.py b/plinth/tests/test_daemon.py index 4e448348a..62c1f22d7 100644 --- a/plinth/tests/test_daemon.py +++ b/plinth/tests/test_daemon.py @@ -41,9 +41,13 @@ def test_initialization(): assert daemon.component_id == 'test-daemon' assert daemon.unit == 'test-unit' assert not daemon.strict_check + assert daemon.listen_ports == [] - daemon = Daemon('test-daemon', 'test-unit', strict_check=True) + listen_ports = [(345, 'tcp4'), (123, 'udp')] + daemon = Daemon('test-daemon', 'test-unit', strict_check=True, + listen_ports=listen_ports) assert daemon.strict_check + assert daemon.listen_ports == listen_ports @patch('plinth.action_utils.service_is_enabled') @@ -88,6 +92,22 @@ def test_is_running(service_is_running, daemon): assert not daemon.is_running() +@patch('plinth.action_utils.diagnose_port_listening') +def test_diagnose(diagnose_port_listening, daemon): + """Test running diagnostics.""" + def side_effect(port, kind): + return [f'test-result-{port}-{kind}', 'passed'] + + daemon = Daemon('test-daemon', 'test-unit', listen_ports=[(8273, 'tcp4'), + (345, 'udp')]) + diagnose_port_listening.side_effect = side_effect + results = daemon.diagnose() + assert results == [['test-result-8273-tcp4', 'passed'], + ['test-result-345-udp', 'passed']] + diagnose_port_listening.assert_has_calls( + [call(8273, 'tcp4'), call(345, 'udp')]) + + @patch('plinth.action_utils.service_is_running') def test_app_is_running(service_is_running): """Test that checking whether app is running works.""" From 68bc2f45a598f34c96d0dd7018862ab14adb9e90 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 18 Dec 2019 12:25:49 -0800 Subject: [PATCH 26/43] daemon: Implement diagnostic test to check if a daemon is running Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/daemon.py | 14 +++++++++++++- plinth/tests/test_daemon.py | 12 ++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/plinth/daemon.py b/plinth/daemon.py index 352a75a30..4e0bece32 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -62,14 +62,26 @@ class Daemon(app.LeaderComponent): return action_utils.service_is_running(self.unit) def diagnose(self): - """Check if the daemon is listening on expected ports.""" + """Check if the daemon is running and listening on expected ports. + + See :py:meth:`plinth.app.Component.diagnose`. + + """ results = [] + results.append(self._diagnose_unit_is_running()) for port in self.listen_ports: results.append( action_utils.diagnose_port_listening(port[0], port[1])) return results + def _diagnose_unit_is_running(self): + """Check if a daemon is running.""" + message = _('Service {service_name} is running').format( + service_name=self.unit) + result = 'passed' if self.is_running() else 'failed' + return [message, result] + def app_is_running(app_): """Return whether all the daemons in the app are running.""" diff --git a/plinth/tests/test_daemon.py b/plinth/tests/test_daemon.py index 62c1f22d7..a2101a86c 100644 --- a/plinth/tests/test_daemon.py +++ b/plinth/tests/test_daemon.py @@ -92,8 +92,9 @@ def test_is_running(service_is_running, daemon): assert not daemon.is_running() +@patch('plinth.action_utils.service_is_running') @patch('plinth.action_utils.diagnose_port_listening') -def test_diagnose(diagnose_port_listening, daemon): +def test_diagnose(diagnose_port_listening, service_is_running, daemon): """Test running diagnostics.""" def side_effect(port, kind): return [f'test-result-{port}-{kind}', 'passed'] @@ -101,11 +102,18 @@ def test_diagnose(diagnose_port_listening, daemon): daemon = Daemon('test-daemon', 'test-unit', listen_ports=[(8273, 'tcp4'), (345, 'udp')]) diagnose_port_listening.side_effect = side_effect + service_is_running.return_value = True results = daemon.diagnose() - assert results == [['test-result-8273-tcp4', 'passed'], + assert results == [['Service test-unit is running', 'passed'], + ['test-result-8273-tcp4', 'passed'], ['test-result-345-udp', 'passed']] diagnose_port_listening.assert_has_calls( [call(8273, 'tcp4'), call(345, 'udp')]) + service_is_running.assert_has_calls([call('test-unit')]) + + service_is_running.return_value = False + results = daemon.diagnose() + assert results[0][1] == 'failed' @patch('plinth.action_utils.service_is_running') From 1f14c42af554f1a14124257843b9fc1a0a06755f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 18 Dec 2019 12:09:12 -0800 Subject: [PATCH 27/43] firewall: Implement new diagnostic tests to check port status - Test that a port meant to available to internal network is available. - Test that a port meant to available to external network is available. - Test that a port meant to unavailable to external network is unavailable. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/firewall/components.py | 37 ++++++++++++ .../modules/firewall/tests/test_components.py | 56 +++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/plinth/modules/firewall/components.py b/plinth/modules/firewall/components.py index 8d0a7040c..5af546f73 100644 --- a/plinth/modules/firewall/components.py +++ b/plinth/modules/firewall/components.py @@ -20,6 +20,8 @@ App component for other apps to use firewall functionality. import logging +from django.utils.translation import ugettext_lazy as _ + from plinth import app from plinth.modules import firewall @@ -109,3 +111,38 @@ class Firewall(app.FollowerComponent): def get_internal_interfaces(): """Returns a list of interfaces in a firewall zone.""" return firewall.get_interfaces('internal') + + def diagnose(self): + """Check if the firewall ports are open and only as expected. + + See :py:meth:`plinth.app.Component.diagnose`. + + """ + results = [] + internal_ports = firewall.get_enabled_services(zone='internal') + external_ports = firewall.get_enabled_services(zone='external') + for port_detail in self.ports_details: + port = port_detail['name'] + + # Internal zone + result = 'passed' if port in internal_ports else 'failed' + message = _( + 'Port {name} ({details}) available for internal networks' + ).format(name=port, details=port_detail['details']) + results.append([message, result]) + + # External zone + if self.is_external: + result = 'passed' if port in external_ports else 'failed' + message = _( + 'Port {name} ({details}) available for external networks' + ).format(name=port, details=port_detail['details']) + else: + result = 'passed' if port not in external_ports else 'failed' + message = _( + 'Port {name} ({details}) unavailable for external networks' + ).format(name=port, details=port_detail['details']) + + results.append([message, result]) + + return results diff --git a/plinth/modules/firewall/tests/test_components.py b/plinth/modules/firewall/tests/test_components.py index cf5bac265..dc4e90969 100644 --- a/plinth/modules/firewall/tests/test_components.py +++ b/plinth/modules/firewall/tests/test_components.py @@ -136,3 +136,59 @@ def test_disable(get_enabled_services, add_service, remove_service): call('test-port4', zone='external') ] remove_service.assert_has_calls(calls) + + +@patch('plinth.modules.firewall.get_port_details') +@patch('plinth.modules.firewall.get_enabled_services') +def test_diagnose(get_enabled_services, get_port_details): + """Test diagnosing open/closed firewall ports.""" + def get_port_details_side_effect(port): + return { + 'test-port1': '1234/tcp', + 'test-port2': '2345/udp', + 'test-port3': '3456/tcp', + 'test-port4': '4567/udp' + }[port] + + def get_enabled_services_side_effect(zone): + return { + 'internal': ['test-port1', 'test-port3'], + 'external': ['test-port2', 'test-port3'] + }[zone] + + get_enabled_services.side_effect = get_enabled_services_side_effect + get_port_details.side_effect = get_port_details_side_effect + firewall = Firewall('test-firewall-1', ports=['test-port1', 'test-port2'], + is_external=False) + results = firewall.diagnose() + assert results == [ + [ + 'Port test-port1 (1234/tcp) available for internal networks', + 'passed' + ], + [ + 'Port test-port1 (1234/tcp) unavailable for external networks', + 'passed' + ], + [ + 'Port test-port2 (2345/udp) available for internal networks', + 'failed' + ], + [ + 'Port test-port2 (2345/udp) unavailable for external networks', + 'failed' + ] + ] + + firewall = Firewall('test-firewall-1', ports=['test-port3', 'test-port4'], + is_external=True) + results = firewall.diagnose() + assert results == [[ + 'Port test-port3 (3456/tcp) available for internal networks', 'passed' + ], [ + 'Port test-port3 (3456/tcp) available for external networks', 'passed' + ], [ + 'Port test-port4 (4567/udp) available for internal networks', 'failed' + ], [ + 'Port test-port4 (4567/udp) available for external networks', 'failed' + ]] From 2ebb565c926bcc6ae802ed4671a1752a47dc4da8 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 12 Dec 2019 00:00:35 -0500 Subject: [PATCH 28/43] diagnostics: Use new component based API for all diagnostic tests Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- doc/dev/reference/app_module.rst | 15 --- doc/dev/tutorial/other.rst | 63 ++++------ plinth/modules/bind/__init__.py | 20 +--- plinth/modules/cockpit/__init__.py | 16 +-- plinth/modules/coquelicot/__init__.py | 16 +-- plinth/modules/datetime/__init__.py | 14 +-- plinth/modules/deluge/__init__.py | 20 +--- plinth/modules/diagnostics/__init__.py | 21 ++-- plinth/modules/diagnostics/diagnostics.py | 55 ++++----- .../diagnostics/templates/diagnostics.html | 8 +- ...stics_module.html => diagnostics_app.html} | 4 +- .../templates/diagnostics_button.html | 2 +- plinth/modules/diagnostics/urls.py | 4 +- plinth/modules/diaspora/__init__.py | 35 +++--- plinth/modules/ejabberd/__init__.py | 25 ++-- plinth/modules/gitweb/__init__.py | 18 +-- plinth/modules/i2p/__init__.py | 20 +--- plinth/modules/ikiwiki/__init__.py | 16 +-- plinth/modules/infinoted/__init__.py | 15 +-- plinth/modules/letsencrypt/__init__.py | 22 ++-- plinth/modules/matrixsynapse/__init__.py | 21 +--- plinth/modules/mediawiki/__init__.py | 15 +-- plinth/modules/minetest/__init__.py | 13 +- plinth/modules/minidlna/__init__.py | 15 +-- plinth/modules/mldonkey/__init__.py | 20 +--- plinth/modules/mumble/__init__.py | 18 +-- plinth/modules/networks/__init__.py | 37 +++--- plinth/modules/openvpn/__init__.py | 10 +- plinth/modules/privoxy/__init__.py | 22 ++-- plinth/modules/quassel/__init__.py | 15 +-- plinth/modules/radicale/__init__.py | 16 +-- plinth/modules/repro/__init__.py | 24 ++-- plinth/modules/roundcube/__init__.py | 16 +-- plinth/modules/samba/__init__.py | 28 ++--- plinth/modules/searx/__init__.py | 19 +-- plinth/modules/shadowsocks/__init__.py | 15 +-- plinth/modules/syncthing/__init__.py | 16 +-- plinth/modules/tahoe/__init__.py | 27 +++-- plinth/modules/tor/__init__.py | 112 +++++++++--------- plinth/modules/transmission/__init__.py | 31 ++--- plinth/modules/ttrss/__init__.py | 16 +-- plinth/modules/users/__init__.py | 33 +++--- plinth/templates/toolbar.html | 2 +- 43 files changed, 334 insertions(+), 616 deletions(-) rename plinth/modules/diagnostics/templates/{diagnostics_module.html => diagnostics_app.html} (87%) diff --git a/doc/dev/reference/app_module.rst b/doc/dev/reference/app_module.rst index 589b64481..de7be76f5 100644 --- a/doc/dev/reference/app_module.rst +++ b/doc/dev/reference/app_module.rst @@ -14,21 +14,6 @@ are loaded. The ``init()`` call order guarantees that other applications that this application depends on will be initialized before this application is initialized. -.diagnose() -^^^^^^^^^^^^^^^^^^^^^^^ - -Optional. Called when the user invokes system-wide diagnostics by visiting -**System -> Diagnositcs**. This method must return an array of diagnostic -results. Each diagnostic result must be a two-tuple with first element as a -string that is shown to the user as name of the test and second element is the -result of the test. It must be one of ``passed``, ``failed``, ``error``. Example -return value: - -.. code-block:: python3 - - [('Check http://localhost/app is reachable', 'passed'), - ('Check configuration is sane', 'passed')] - .depends ^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/dev/tutorial/other.rst b/doc/dev/tutorial/other.rst index 0d66bbb4b..da42cd9d2 100644 --- a/doc/dev/tutorial/other.rst +++ b/doc/dev/tutorial/other.rst @@ -102,57 +102,38 @@ daemons should be stopped during the backup process. In ``__init__.py``, add: Creating diagnostics ^^^^^^^^^^^^^^^^^^^^ -When the app does not work as expected, the user should known what is happening -with the app. The FreedomBox framework provides an API for running and showing -diagnostics results. The app has to implement a method for actually running the -diagnostics and return the results as a list. FreedomBox then takes care of +When the app does not work as expected, the user should know what is happening +with the app. FreedomBox framework provides an API for running and showing +diagnostics results. Most of the common diagnostic tests are implemented by the +framework as part of the components used by an app. FreedomBox takes care of calling the diagnostics method and displaying the list in a formatted manner. -To implement the diagnostics, a method called ``diagnose()`` has to be available -as ``.diagnose()``. It must return a list in which each item is the -result of a test performed. The item itself is a two-tuple containing the -display name of the test followed by the result as ``passed``, ``failed`` or -``error``. +To implement additional diagnostic tests on top of those provided by the +framework, the method :meth:`plinth.app.App.diagnose` has to be overridden or in +a component that belongs to the app, the method +:meth:`plinth.app.Component.diagnose` has to be overridden. The methods must +return a list in which each item is the result of a test performed. The item +itself is a two-tuple containing the display name of the test followed by the +result as ``passed``, ``failed`` or ``error``. .. code-block:: python3 - def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend(action_utils.diagnose_url_on_all( - 'https://{host}/transmission', extra_options=['--no-check-certificate'])) - - return results - -Now that we have implemented diagnostics, we also need to show a diagnostics -button in the App's page. Adding an attribute to the -:class:`~plinth.views.AppView` will take care of this. - -.. code-block:: python3 - - class TransmissionView(views.AppView): + class TransmissionAppView(views.AppView): ... - diagnostics_module_name = 'transmission' + def diagnose(): + """Run diagnostics and return the results.""" + results = super().diagnose() -There are several helpers available to implement some of the common diagnostic -tests. For our application we wish to implement a test to check whether the -``/transmission`` URL is accessible. Since this is a commonly performed test, -there is a helper method available and we have used it in the above code. The -``{host}`` tag replaced with various IP addresses, hostnames and domain names by -the helper to produce different kinds of URLs and they are all tested. Results -for all tests are returned which we then pass on to the framework. + results.append(['Example test', 'passed']) + + return results The user can trigger the diagnostics test by going to **System -> Diagnostics** page. This runs diagnostics for all the applications. Users can also run -diagnostics specifically for this app from the app's page. A diagnostics button -is shown by the `app.html` template automatically when -``diagnostics_module_name`` attribute is set in the app's ``AppView`` derived -from :obj:`plinth.views.AppView`. - -.. code-block:: django - - {% include "diagnostics_button.html" with module="ttrss" enabled=True %} +diagnostics specifically for this app from the app's page. A diagnostics menu +item is shown by the :class:`plinth.views.AppView` and `app.html` template +automatically when ``diagnose()`` method is overridden in the app or a +component. Logging ^^^^^^^ diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py index 8e809456a..66e8b83d4 100644 --- a/plinth/modules/bind/__init__.py +++ b/plinth/modules/bind/__init__.py @@ -22,7 +22,7 @@ import re from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, menu from plinth.daemon import Daemon @@ -102,7 +102,11 @@ class BindApp(app_module.App): is_external=False) self.add(firewall) - daemon = Daemon('daemon-bind', managed_services[0]) + daemon = Daemon( + 'daemon-bind', managed_services[0], listen_ports=[(53, 'tcp6'), + (53, 'udp6'), + (53, 'tcp4'), + (53, 'udp4')]) self.add(daemon) @@ -129,18 +133,6 @@ def force_upgrade(helper, _packages): return True -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(53, 'tcp6')) - results.append(action_utils.diagnose_port_listening(53, 'udp6')) - results.append(action_utils.diagnose_port_listening(53, 'tcp4')) - results.append(action_utils.diagnose_port_listening(53, 'udp4')) - - return results - - def get_config(): """Get current configuration""" data = [line.strip() for line in open(CONFIG_FILE, 'r')] diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index e303f7761..df667496b 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -21,7 +21,7 @@ FreedomBox app to configure Cockpit. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -93,7 +93,8 @@ class CockpitApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-cockpit', 'cockpit-freedombox') + webserver = Webserver('webserver-cockpit', 'cockpit-freedombox', + urls=['https://{host}/_cockpit/']) self.add(webserver) daemon = Daemon('daemon-cockpit', managed_services[0]) @@ -122,17 +123,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/_cockpit/', - check_certificate=False)) - - return results - - def on_domain_added(sender, domain_type, name, description='', services=None, **kwargs): """Handle addition of a new domain.""" diff --git a/plinth/modules/coquelicot/__init__.py b/plinth/modules/coquelicot/__init__.py index bcc55c1a8..37878db47 100644 --- a/plinth/modules/coquelicot/__init__.py +++ b/plinth/modules/coquelicot/__init__.py @@ -20,7 +20,7 @@ Plinth module to configure coquelicot. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -79,7 +79,8 @@ class CoquelicotApp(app_module.App): ports=['http', 'https'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-coquelicot', 'coquelicot-freedombox') + webserver = Webserver('webserver-coquelicot', 'coquelicot-freedombox', + urls=['https://{host}/coquelicot']) self.add(webserver) daemon = Daemon('daemon-coquelicot', managed_services[0]) @@ -107,14 +108,3 @@ def get_current_max_file_size(): """Get the current value of maximum file size.""" size = actions.superuser_run('coquelicot', ['get-max-file-size']) return int(size.strip()) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/coquelicot', - check_certificate=False)) - - return results diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index c23bc8b18..abce4f889 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -63,6 +63,12 @@ class DateTimeApp(app_module.App): daemon = Daemon('daemon-datetime', managed_services[0]) self.add(daemon) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + results.append(_diagnose_time_synchronized()) + return results + def init(): """Initialize the date/time module.""" @@ -77,14 +83,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - results.append(_diagnose_time_synchronized()) - - return results - - def _diagnose_time_synchronized(): """Check whether time is synchronized to NTP server.""" result = 'failed' diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index e1aab2e4f..59c8f6e4c 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -20,7 +20,7 @@ FreedomBox app to configure a Deluge web client. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -82,10 +82,12 @@ class DelugeApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-deluge', 'deluge-plinth') + webserver = Webserver('webserver-deluge', 'deluge-plinth', + urls=['https://{host}/deluge']) self.add(webserver) - daemon = Daemon('daemon-deluge', managed_services[0]) + daemon = Daemon('daemon-deluge', managed_services[0], + listen_ports=[(8112, 'tcp4')]) self.add(daemon) @@ -105,15 +107,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'deluge', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(8112, 'tcp4')) - results.extend( - action_utils.diagnose_url_on_all('https://{host}/deluge', - check_certificate=False)) - - return results diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index dfc228729..b74a66a8e 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -55,20 +55,19 @@ class DiagnosticsApp(app_module.App): 'diagnostics:index', parent_url_name='system') self.add(menu_item) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + results.append(action_utils.diagnose_port_listening(8000, 'tcp4')) + results.extend( + action_utils.diagnose_url_on_all('http://{host}/plinth/', + check_certificate=False)) + + return results + def init(): """Initialize the module""" global app app = DiagnosticsApp() app.set_enabled(True) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - results.append(action_utils.diagnose_port_listening(8000, 'tcp4')) - results.extend( - action_utils.diagnose_url_on_all('http://{host}/plinth/', - check_certificate=False)) - - return results diff --git a/plinth/modules/diagnostics/diagnostics.py b/plinth/modules/diagnostics/diagnostics.py index 6bf0e8ec0..4eb1b3c45 100644 --- a/plinth/modules/diagnostics/diagnostics.py +++ b/plinth/modules/diagnostics/diagnostics.py @@ -19,6 +19,7 @@ FreedomBox app for running diagnostics. """ import collections +import importlib import logging import threading @@ -27,7 +28,7 @@ from django.template.response import TemplateResponse from django.utils.translation import ugettext_lazy as _ from django.views.decorators.http import require_POST -from plinth import module_loader +from plinth.app import App from plinth.modules import diagnostics logger = logging.Logger(__name__) @@ -53,23 +54,18 @@ def index(request): @require_POST -def module(request, module_name): - """Return diagnostics for a particular module.""" +def diagnose_app(request, app_id): + """Return diagnostics for a particular app.""" try: - module = module_loader.loaded_modules[module_name] + app = App.get(app_id) except KeyError: - raise Http404('Module does not exist or not loaded') + raise Http404('App does not exist') - results = [] - if hasattr(module, 'diagnose'): - results = module.diagnose() - - return TemplateResponse( - request, 'diagnostics_module.html', { - 'title': _('Diagnostic Test'), - 'module_name': module_name, - 'results': results - }) + return TemplateResponse(request, 'diagnostics_app.html', { + 'title': _('Diagnostic Test'), + 'app_id': app_id, + 'results': app.diagnose() + }) def _start_task(): @@ -99,29 +95,28 @@ def run_on_all_enabled_modules(): """Run diagnostics on all the enabled modules and store the result.""" global current_results current_results = { - 'modules': [], + 'apps': [], 'results': collections.OrderedDict(), 'progress_percentage': 0 } - modules = [] - for module_name, module in module_loader.loaded_modules.items(): - if not hasattr(module, 'diagnose'): - continue - - # Don't run setup on modules have not been setup yet. - # However, run on modules that need an upgrade. + apps = [] + for app in App.list(): + # XXX: Implement more cleanly. + # Don't run diagnostics on apps have not been setup yet. + # However, run on apps that need an upgrade. + module = importlib.import_module(app.__class__.__module__) if module.setup_helper.get_state() == 'needs-setup': continue - if not module.app.is_enabled(): + if not app.is_enabled(): continue - modules.append((module_name, module)) - current_results['results'][module_name] = None + apps.append((app.app_id, app)) + current_results['results'][app.app_id] = None - current_results['modules'] = modules - for current_index, (module_name, module) in enumerate(modules): - current_results['results'][module_name] = module.diagnose() + current_results['apps'] = apps + for current_index, (app_id, app) in enumerate(apps): + current_results['results'][app_id] = app.diagnose() current_results['progress_percentage'] = \ - int((current_index + 1) * 100 / len(modules)) + int((current_index + 1) * 100 / len(apps)) diff --git a/plinth/modules/diagnostics/templates/diagnostics.html b/plinth/modules/diagnostics/templates/diagnostics.html index 93809d582..a8474003e 100644 --- a/plinth/modules/diagnostics/templates/diagnostics.html +++ b/plinth/modules/diagnostics/templates/diagnostics.html @@ -63,11 +63,11 @@ {{ results.error }} {% else %} - {% for module, module_results in results.results.items %} -

{% blocktrans %}Module: {{ module }}{% endblocktrans %}

+ {% for app_id, app_results in results.results.items %} +

{% blocktrans %}App: {{ app_id }}{% endblocktrans %}

- {% if module_results %} - {% include "diagnostics_results.html" with results=module_results %} + {% if app_results %} + {% include "diagnostics_results.html" with results=app_results %} {% else %}

{% endif %} diff --git a/plinth/modules/diagnostics/templates/diagnostics_module.html b/plinth/modules/diagnostics/templates/diagnostics_app.html similarity index 87% rename from plinth/modules/diagnostics/templates/diagnostics_module.html rename to plinth/modules/diagnostics/templates/diagnostics_app.html index 6740fcdf6..540a65ae1 100644 --- a/plinth/modules/diagnostics/templates/diagnostics_module.html +++ b/plinth/modules/diagnostics/templates/diagnostics_app.html @@ -24,12 +24,12 @@

{% trans "Diagnostic Results" %}

-

{% blocktrans %}Module: {{ module_name }}{% endblocktrans %}

+

{% blocktrans %}App: {{ app_id }}{% endblocktrans %}

{% if results %} {% include "diagnostics_results.html" with results=results %} {% else %} -

{% trans "This module does not support diagnostics" %}

+

{% trans "This app does not support diagnostics" %}

{% endif %} {% endblock %} diff --git a/plinth/modules/diagnostics/templates/diagnostics_button.html b/plinth/modules/diagnostics/templates/diagnostics_button.html index e218daa3c..54aef9b75 100644 --- a/plinth/modules/diagnostics/templates/diagnostics_button.html +++ b/plinth/modules/diagnostics/templates/diagnostics_button.html @@ -20,7 +20,7 @@ {% load i18n %}
+ action="{% url 'diagnostics:app' app_id %}"> {% csrf_token %} {% if enabled %} diff --git a/plinth/modules/diagnostics/urls.py b/plinth/modules/diagnostics/urls.py index ace9382e3..055baa9dc 100644 --- a/plinth/modules/diagnostics/urls.py +++ b/plinth/modules/diagnostics/urls.py @@ -24,6 +24,6 @@ from . import diagnostics as views urlpatterns = [ url(r'^sys/diagnostics/$', views.index, name='index'), - url(r'^sys/diagnostics/(?P[1-9a-z\-]+)/$', views.module, - name='module'), + url(r'^sys/diagnostics/(?P[1-9a-z\-]+)/$', views.diagnose_app, + name='app'), ] diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 4452a8627..fd166549f 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -105,6 +105,23 @@ class DiasporaApp(app_module.App): daemon = Daemon('daemon-diaspora', managed_services[0]) self.add(daemon) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + + results.append( + action_utils.diagnose_url('http://diaspora.localhost', kind='4', + check_certificate=False)) + results.append( + action_utils.diagnose_url('http://diaspora.localhost', kind='6', + check_certificate=False)) + results.append( + action_utils.diagnose_url( + 'http://diaspora.{}'.format(get_configured_domain_name()), + kind='4', check_certificate=False)) + + return results + class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" @@ -155,24 +172,6 @@ def disable_user_registrations(): actions.superuser_run('diaspora', ['disable-user-registrations']) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append( - action_utils.diagnose_url('http://diaspora.localhost', kind='4', - check_certificate=False)) - results.append( - action_utils.diagnose_url('http://diaspora.localhost', kind='6', - check_certificate=False)) - results.append( - action_utils.diagnose_url( - 'http://diaspora.{}'.format(get_configured_domain_name()), - kind='4', check_certificate=False)) - - return results - - def generate_apache_configuration(conf_file, domain_name): """Generate Diaspora's apache configuration with the given domain name""" open(conf_file, 'w').close() diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index 29046027d..f92a05227 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -25,7 +25,7 @@ import pathlib from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -108,7 +108,8 @@ class EjabberdApp(app_module.App): 'xmpp-bosh'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-ejabberd', 'jwchat-plinth') + webserver = Webserver('webserver-ejabberd', 'jwchat-plinth', + urls=['http://{host}/bosh/']) self.add(webserver) letsencrypt = LetsEncrypt( @@ -120,7 +121,10 @@ class EjabberdApp(app_module.App): managing_app='ejabberd') self.add(letsencrypt) - daemon = Daemon('daemon-ejabberd', managed_services[0]) + daemon = Daemon( + 'daemon-ejabberd', managed_services[0], + listen_ports=[(5222, 'tcp4'), (5222, 'tcp6'), (5269, 'tcp4'), + (5269, 'tcp6'), (5443, 'tcp4'), (5443, 'tcp6')]) self.add(daemon) @@ -214,18 +218,3 @@ def on_domain_added(sender, domain_type, name, description='', services=None, if name not in conf['domains']: actions.superuser_run('ejabberd', ['add-domain', '--domainname', name]) app.get_component('letsencrypt-ejabberd').setup_certificates() - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(5222, 'tcp4')) - results.append(action_utils.diagnose_port_listening(5222, 'tcp6')) - results.append(action_utils.diagnose_port_listening(5269, 'tcp4')) - results.append(action_utils.diagnose_port_listening(5269, 'tcp6')) - results.append(action_utils.diagnose_port_listening(5443, 'tcp4')) - results.append(action_utils.diagnose_port_listening(5443, 'tcp6')) - results.extend(action_utils.diagnose_url_on_all('http://{host}/bosh/')) - - return results diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 57730a903..ed9b201f1 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -23,7 +23,7 @@ import os from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.errors import ActionError @@ -32,7 +32,8 @@ from plinth.modules.firewall.components import Firewall from plinth.modules.users import register_group from .forms import is_repo_url -from .manifest import GIT_REPO_PATH, backup, clients # noqa, pylint: disable=unused-import +from .manifest import (GIT_REPO_PATH, # noqa, pylint: disable=unused-import + backup, clients) clients = clients @@ -89,7 +90,8 @@ class GitwebApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-gitweb', 'gitweb-freedombox') + webserver = Webserver('webserver-gitweb', 'gitweb-freedombox', + urls=['https://{host}/gitweb/']) self.add(webserver) self.auth_webserver = GitwebWebserverAuth('webserver-gitweb-auth', @@ -191,16 +193,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/gitweb/', - check_certificate=False)) - return results - - def restore_post(packet): """Update access after restoration of backups.""" app.update_service_access() diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index 0ab5d430b..b5a4e5b74 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -20,7 +20,7 @@ FreedomBox app to configure I2P. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -105,10 +105,12 @@ class I2PApp(app_module.App): is_external=False) self.add(firewall) - webserver = Webserver('webserver-i2p', 'i2p-freedombox') + webserver = Webserver('webserver-i2p', 'i2p-freedombox', + urls=['https://{host}/i2p/']) self.add(webserver) - daemon = Daemon('daemon-i2p', managed_services[0]) + daemon = Daemon('daemon-i2p', managed_services[0], + listen_ports=[(7657, 'tcp6')]) self.add(daemon) @@ -152,15 +154,3 @@ def setup(helper, old_version=None): '--value', '0.0.0.0' ]) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(7657, 'tcp6')) - results.extend( - action_utils.diagnose_url_on_all('https://{host}/i2p/', - check_certificate=False)) - - return results diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index e4eaf2033..213a58c58 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -21,7 +21,7 @@ FreedomBox app to configure ikiwiki. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.modules.apache.components import Webserver @@ -85,7 +85,8 @@ class IkiwikiApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-ikiwiki', 'ikiwiki-plinth') + webserver = Webserver('webserver-ikiwiki', 'ikiwiki-plinth', + urls=['https://{host}/ikiwiki']) self.add(webserver) def add_shortcut(self, site, title): @@ -129,14 +130,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'ikiwiki', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/ikiwiki', - check_certificate=False)) - - return results diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 133b209e4..3d2e2d060 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -21,7 +21,7 @@ FreedomBox app for infinoted. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -85,7 +85,8 @@ class InfinotedApp(app_module.App): ports=['infinoted-plinth'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-infinoted', managed_services[0]) + daemon = Daemon('daemon-infinoted', managed_services[0], + listen_ports=[(6523, 'tcp4'), (6523, 'tcp6')]) self.add(daemon) @@ -114,13 +115,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'infinoted', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(6523, 'tcp4')) - results.append(action_utils.diagnose_port_listening(6523, 'tcp6')) - - return results diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index 23f60bdb4..bcec0d953 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -85,6 +85,17 @@ class LetsEncryptApp(app_module.App): parent_url_name='system') self.add(menu_item) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + + for domain in names.components.DomainName.list(): + if domain.domain_type.can_have_certificate: + results.append( + action_utils.diagnose_url('https://' + domain.name)) + + return results + def init(): """Initialize the module.""" @@ -106,17 +117,6 @@ def setup(helper, old_version=None): ['setup', '--old-version', str(old_version)]) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - for domain in names.components.DomainName.list(): - if domain.domain_type.can_have_certificate: - results.append(action_utils.diagnose_url('https://' + domain.name)) - - return results - - def certificate_obtain(domain): """Obtain a certificate for a domain and notify handlers.""" actions.superuser_run('letsencrypt', ['obtain', '--domain', domain]) diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 08ea2ebaa..f9ebbcee6 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -26,7 +26,7 @@ from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from ruamel.yaml.util import load_yaml_guess_indent -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -104,7 +104,8 @@ class MatrixSynapseApp(app_module.App): self.add(firewall) webserver = Webserver('webserver-matrixsynapse', - 'matrix-synapse-plinth') + 'matrix-synapse-plinth', + urls=['https://{host}/_matrix/client/versions']) self.add(webserver) letsencrypt = LetsEncrypt( @@ -116,7 +117,8 @@ class MatrixSynapseApp(app_module.App): managing_app='matrixsynapse') self.add(letsencrypt) - daemon = Daemon('daemon-matrixsynapse', managed_services[0]) + daemon = Daemon('daemon-matrixsynapse', managed_services[0], + listen_ports=[(8008, 'tcp4'), (8448, 'tcp4')]) self.add(daemon) @@ -152,19 +154,6 @@ def is_setup(): return os.path.exists(SERVER_NAME_PATH) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(8008, 'tcp4')) - results.append(action_utils.diagnose_port_listening(8448, 'tcp4')) - results.extend( - action_utils.diagnose_url_on_all( - 'https://{host}/_matrix/client/versions', check_certificate=False)) - - return results - - def get_domains(): """Return a list of domains this app is interested in.""" domain = get_configured_domain_name() diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index e945cba0a..00a2bda31 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -20,7 +20,7 @@ FreedomBox app to configure MediaWiki. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -88,7 +88,8 @@ class MediaWikiApp(app_module.App): ports=['http', 'https'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-mediawiki', 'mediawiki') + webserver = Webserver('webserver-mediawiki', 'mediawiki', + urls=['https://{host}/mediawiki']) self.add(webserver) webserver = Webserver('webserver-mediawiki-freedombox', @@ -125,16 +126,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/mediawiki', - check_certificate=False)) - return results - - def is_public_registration_enabled(): """Return whether public registration is enabled.""" output = actions.superuser_run('mediawiki', diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index ffa928ea4..8cebad289 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -22,7 +22,6 @@ import augeas from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -101,7 +100,8 @@ class MinetestApp(app_module.App): ports=['minetest-plinth'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-minetest', managed_services[0]) + daemon = Daemon('daemon-minetest', managed_services[0], + listen_ports=[(30000, 'udp4')]) self.add(daemon) @@ -121,15 +121,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(30000, 'udp4')) - - return results - - def load_augeas(): """Initialize Augeas.""" aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 951e238dc..a969fe349 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -19,14 +19,12 @@ 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 import actions, frontpage, menu from plinth.daemon import Daemon 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 @@ -77,7 +75,8 @@ class MiniDLNAApp(app_module.App): ) firewall = Firewall('firewall-minidlna', name, ports=['minidlna'], is_external=False) - webserver = Webserver('webserver-minidlna', 'minidlna-freedombox') + webserver = Webserver('webserver-minidlna', 'minidlna-freedombox', + urls=['http://localhost:8200/']) shortcut = frontpage.Shortcut( 'shortcut-minidlna', name, @@ -113,11 +112,3 @@ def setup(helper, old_version=None): 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/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 6c204756b..c12b86e41 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -20,7 +20,7 @@ FreedomBox app for mldonkey. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -91,10 +91,12 @@ class MLDonkeyApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-mldonkey', 'mldonkey-freedombox') + webserver = Webserver('webserver-mldonkey', 'mldonkey-freedombox', + urls=['https://{host}/mldonkey/']) self.add(webserver) - daemon = Daemon('daemon-mldonkey', managed_services[0]) + daemon = Daemon('daemon-mldonkey', managed_services[0], + listen_ports=[(4080, 'tcp4')]) self.add(daemon) @@ -114,15 +116,3 @@ def setup(helper, old_version=None): helper.call('pre', actions.superuser_run, 'mldonkey', ['pre-install']) helper.install(managed_packages) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(4080, 'tcp4')) - results.extend( - action_utils.diagnose_url_on_all('https://{host}/mldonkey/', - check_certificate=False)) - - return results diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 565e6a478..57252f842 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -21,7 +21,6 @@ FreedomBox app to configure Mumble server. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -85,7 +84,10 @@ class MumbleApp(app_module.App): is_external=True) self.add(firewall) - daemon = Daemon('daemon-mumble', managed_services[0]) + daemon = Daemon( + 'daemon-mumble', managed_services[0], + listen_ports=[(64738, 'tcp4'), (64738, 'tcp6'), (64738, 'udp4'), + (64738, 'udp6')]) self.add(daemon) @@ -103,15 +105,3 @@ def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(64738, 'tcp4')) - results.append(action_utils.diagnose_port_listening(64738, 'tcp6')) - results.append(action_utils.diagnose_port_listening(64738, 'udp4')) - results.append(action_utils.diagnose_port_listening(64738, 'udp6')) - - return results diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 9a0d0816e..5a1fa58f1 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -61,6 +61,24 @@ class NetworksApp(app_module.App): 'networks:index', parent_url_name='system') self.add(menu_item) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + + interfaces = _get_shared_interfaces() + addresses = _get_interface_addresses(interfaces) + + for address in addresses: + results.append( + action_utils.diagnose_port_listening(53, 'tcp', address)) + results.append( + action_utils.diagnose_port_listening(53, 'udp', address)) + + results.append(_diagnose_dnssec('4')) + results.append(_diagnose_dnssec('6')) + + return results + def init(): """Initialize the Networks module.""" @@ -76,25 +94,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - interfaces = _get_shared_interfaces() - addresses = _get_interface_addresses(interfaces) - - for address in addresses: - results.append(action_utils.diagnose_port_listening( - 53, 'tcp', address)) - results.append(action_utils.diagnose_port_listening( - 53, 'udp', address)) - - results.append(_diagnose_dnssec('4')) - results.append(_diagnose_dnssec('6')) - - return results - - def _get_shared_interfaces(): """Get active network interfaces in shared mode.""" shared_interfaces = [] diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index b2a57b862..bd9683d3a 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -21,7 +21,7 @@ FreedomBox app to configure OpenVPN server. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -89,7 +89,8 @@ class OpenVPNApp(app_module.App): is_external=True) self.add(firewall) - daemon = Daemon('daemon-openvpn', managed_services[0]) + daemon = Daemon('daemon-openvpn', managed_services[0], + listen_ports=[(1194, 'udp4')]) self.add(daemon) @@ -115,8 +116,3 @@ def setup(helper, old_version=None): def is_setup(): """Return whether the service is running.""" return actions.superuser_run('openvpn', ['is-setup']).strip() == 'true' - - -def diagnose(): - """Run diagnostics and return the results.""" - return [action_utils.diagnose_port_listening(1194, 'udp4')] diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 08c827bad..c2c91b353 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -90,9 +90,17 @@ class PrivoxyApp(app_module.App): is_external=False) self.add(firewall) - daemon = Daemon('daemon-privoxy', managed_services[0]) + daemon = Daemon('daemon-privoxy', managed_services[0], + listen_ports=[(8118, 'tcp4'), (8118, 'tcp6')]) self.add(daemon) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + results.append(action_utils.diagnose_url('https://www.debian.org')) + results.extend(diagnose_url_with_proxy()) + return results + def init(): """Initialize the module.""" @@ -120,18 +128,6 @@ class PrivoxyAppView(AppView): icon_filename = icon_filename -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(8118, 'tcp4')) - results.append(action_utils.diagnose_port_listening(8118, 'tcp6')) - results.append(action_utils.diagnose_url('https://www.debian.org')) - results.extend(diagnose_url_with_proxy()) - - return results - - def diagnose_url_with_proxy(): """Run a diagnostic on a URL with a proxy.""" url = 'https://debian.org/' # Gives a simple redirect to www. diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index 38115cfba..2b4401de8 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -23,7 +23,7 @@ import pathlib from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -108,7 +108,8 @@ class QuasselApp(app_module.App): managing_app='quassel') self.add(letsencrypt) - daemon = Daemon('daemon-quassel', managed_services[0]) + daemon = Daemon('daemon-quassel', managed_services[0], + listen_ports=[(4242, 'tcp4'), (4242, 'tcp6')]) self.add(daemon) @@ -129,16 +130,6 @@ def setup(helper, old_version=None): app.get_component('letsencrypt-quassel').setup_certificates() -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(4242, 'tcp4')) - results.append(action_utils.diagnose_port_listening(4242, 'tcp6')) - - return results - - def get_available_domains(): """Return an iterator with all domains able to have a certificate.""" return (domain.name for domain in names.components.DomainName.list() diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index d5bc72ca1..e8be8078e 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -26,7 +26,7 @@ import augeas from apt.cache import Cache from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -98,7 +98,8 @@ class RadicaleApp(app_module.App): is_external=True) self.add(firewall) - webserver = RadicaleWebserver('webserver-radicale', None) + webserver = RadicaleWebserver('webserver-radicale', None, + urls=['https://{host}/radicale']) self.add(webserver) uwsgi = RadicaleUwsgi('uwsgi-radicale', 'radicale') @@ -271,14 +272,3 @@ def get_rights_value(): value = 'owner_only' return value - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/radicale', - check_certificate=False)) - - return results diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py index 853f2717e..96416cad4 100644 --- a/plinth/modules/repro/__init__.py +++ b/plinth/modules/repro/__init__.py @@ -21,7 +21,7 @@ FreedomBox app for repro. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon @@ -98,7 +98,13 @@ class ReproApp(app_module.App): webserver = Webserver('webserver-repro', 'repro-plinth') self.add(webserver) - daemon = Daemon('daemon-repro', managed_services[0]) + daemon = Daemon( + 'daemon-repro', managed_services[0], listen_ports=[(5060, 'udp4'), + (5060, 'udp6'), + (5060, 'tcp4'), + (5060, 'tcp6'), + (5061, 'tcp4'), + (5061, 'tcp6')]) self.add(daemon) @@ -127,17 +133,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'repro', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(5060, 'udp4')) - results.append(action_utils.diagnose_port_listening(5060, 'udp6')) - results.append(action_utils.diagnose_port_listening(5060, 'tcp4')) - results.append(action_utils.diagnose_port_listening(5060, 'tcp6')) - results.append(action_utils.diagnose_port_listening(5061, 'tcp4')) - results.append(action_utils.diagnose_port_listening(5061, 'tcp6')) - - return results diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index fe27df7d3..b88102d6f 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -20,7 +20,7 @@ FreedomBox app to configure Roundcube. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.modules.apache.components import Webserver @@ -88,7 +88,8 @@ class RoundcubeApp(app_module.App): ports=['http', 'https'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-roundcube', 'roundcube') + webserver = Webserver('webserver-roundcube', 'roundcube', + urls=['https://{host}/roundcube']) self.add(webserver) @@ -108,14 +109,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'roundcube', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/roundcube', - check_certificate=False)) - - return results diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index b0b6d20ea..c93d5688f 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -27,12 +27,12 @@ import socket from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon -from plinth.modules.users import register_group from plinth.modules.firewall.components import Firewall +from plinth.modules.users import register_group from plinth.utils import format_lazy from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -94,10 +94,16 @@ class SambaApp(app_module.App): firewall = Firewall('firewall-samba', name, ports=['samba']) self.add(firewall) - daemon = Daemon('daemon-samba', managed_services[0]) + daemon = Daemon( + 'daemon-samba', managed_services[0], listen_ports=[(139, 'tcp4'), + (139, 'tcp6'), + (445, 'tcp4'), + (445, 'tcp6')]) self.add(daemon) - daemon_nmbd = Daemon('daemon-samba-nmbd', managed_services[1]) + daemon_nmbd = Daemon('daemon-samba-nmbd', managed_services[1], + listen_ports=[(137, 'udp4'), (138, 'udp4')]) + self.add(daemon_nmbd) @@ -119,20 +125,6 @@ def setup(helper, old_version=None): helper.call('post', app.enable) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(137, 'udp4')) - results.append(action_utils.diagnose_port_listening(138, 'udp4')) - results.append(action_utils.diagnose_port_listening(139, 'tcp4')) - results.append(action_utils.diagnose_port_listening(139, 'tcp6')) - results.append(action_utils.diagnose_port_listening(445, 'tcp4')) - results.append(action_utils.diagnose_port_listening(445, 'tcp6')) - - return results - - def add_share(mount_point, share_type, filesystem): """Add a share.""" command = [ diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 98bb00189..70c738ee4 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -22,14 +22,15 @@ import os from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.users import register_group -from .manifest import PUBLIC_ACCESS_SETTING_FILE, backup, clients # noqa, pylint: disable=unused-import +from .manifest import (PUBLIC_ACCESS_SETTING_FILE, # noqa, pylint: disable=unused-import + backup, clients) clients = clients @@ -80,7 +81,8 @@ class SearxApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-searx', 'searx-freedombox') + webserver = Webserver('webserver-searx', 'searx-freedombox', + urls=['https://{host}/searx/']) self.add(webserver) webserver = SearxWebserverAuth('webserver-searx-auth', @@ -142,17 +144,6 @@ def is_public_access_enabled(): return os.path.exists(PUBLIC_ACCESS_SETTING_FILE) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/searx/', - check_certificate=False)) - - return results - - def enable_public_access(): """Allow Searx app to be accessed by anyone with access.""" actions.superuser_run('searx', ['enable-public-access']) diff --git a/plinth/modules/shadowsocks/__init__.py b/plinth/modules/shadowsocks/__init__.py index 213388f51..5b31e0ffd 100644 --- a/plinth/modules/shadowsocks/__init__.py +++ b/plinth/modules/shadowsocks/__init__.py @@ -21,7 +21,7 @@ FreedomBox app to configure Shadowsocks. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -86,7 +86,8 @@ class ShadowsocksApp(app_module.App): is_external=False) self.add(firewall) - daemon = Daemon('daemon-shadowsocks', managed_services[0]) + daemon = Daemon('daemon-shadowsocks', managed_services[0], + listen_ports=[(1080, 'tcp4'), (1080, 'tcp6')]) self.add(daemon) @@ -105,13 +106,3 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'shadowsocks', ['setup']) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(1080, 'tcp4')) - results.append(action_utils.diagnose_port_listening(1080, 'tcp6')) - - return results diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index ad7f1463b..ab6f29198 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -20,7 +20,7 @@ FreedomBox app to configure Syncthing. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -95,7 +95,8 @@ class SyncthingApp(app_module.App): ports=['syncthing'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-syncthing', 'syncthing-plinth') + webserver = Webserver('webserver-syncthing', 'syncthing-plinth', + urls=['https://{host}/syncthing/']) self.add(webserver) daemon = Daemon('daemon-syncthing', managed_services[0]) @@ -122,14 +123,3 @@ def setup(helper, old_version=None): if old_version == 1 and app.is_enabled(): app.get_component('firewall-syncthing-ports').enable() - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/syncthing/', - check_certificate=False)) - - return results diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index bae49c55d..fd11180bc 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -92,6 +92,20 @@ class TahoeApp(app_module.App): daemon = Daemon('daemon-tahoe', managed_services[0]) self.add(daemon) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + results.extend([ + action_utils.diagnose_url('http://localhost:5678', kind='4', + check_certificate=False), + action_utils.diagnose_url('http://localhost:5678', kind='6', + check_certificate=False), + action_utils.diagnose_url( + 'http://{}:5678'.format(get_configured_domain_name()), + kind='4', check_certificate=False) + ]) + return results + class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" @@ -157,19 +171,6 @@ def post_setup(configured_domain_name): app.enable() -def diagnose(): - """Run diagnostics and return the results.""" - return [ - action_utils.diagnose_url('http://localhost:5678', kind='4', - check_certificate=False), - action_utils.diagnose_url('http://localhost:5678', kind='6', - check_certificate=False), - action_utils.diagnose_url( - 'http://{}:5678'.format(get_configured_domain_name()), kind='4', - check_certificate=False) - ] - - def add_introducer(introducer): """Add an introducer to the storage node's list of introducers. Param introducer must be a tuple of (pet_name, furl) diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 8551a0a61..fd6bfc9e0 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -92,9 +92,65 @@ class TorApp(app_module.App): 'tor-obfs4'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-tor', managed_services[0], strict_check=True) + daemon = Daemon( + 'daemon-tor', managed_services[0], strict_check=True, + listen_ports=[(9050, 'tcp4'), (9050, 'tcp6'), (9040, 'tcp4'), + (9040, 'tcp6'), (9053, 'udp4'), (9053, 'udp6')]) self.add(daemon) + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + + results.extend(_diagnose_control_port()) + + output = actions.superuser_run('tor', ['get-status']) + ports = json.loads(output)['ports'] + + results.append([ + _('Tor relay port available'), + 'passed' if 'orport' in ports else 'failed' + ]) + if 'orport' in ports: + results.append( + action_utils.diagnose_port_listening(int(ports['orport']), + 'tcp4')) + results.append( + action_utils.diagnose_port_listening(int(ports['orport']), + 'tcp6')) + + results.append([ + _('Obfs3 transport registered'), + 'passed' if 'obfs3' in ports else 'failed' + ]) + if 'obfs3' in ports: + results.append( + action_utils.diagnose_port_listening(int(ports['obfs3']), + 'tcp4')) + results.append( + action_utils.diagnose_port_listening(int(ports['obfs3']), + 'tcp6')) + + results.append([ + _('Obfs4 transport registered'), + 'passed' if 'obfs4' in ports else 'failed' + ]) + if 'obfs4' in ports: + results.append( + action_utils.diagnose_port_listening(int(ports['obfs4']), + 'tcp4')) + results.append( + action_utils.diagnose_port_listening(int(ports['obfs4']), + 'tcp6')) + + results.append(_diagnose_url_via_tor('http://www.debian.org', '4')) + results.append(_diagnose_url_via_tor('http://www.debian.org', '6')) + + results.append(_diagnose_tor_use('https://check.torproject.org', '4')) + results.append(_diagnose_tor_use('https://check.torproject.org', '6')) + + return results + def init(): """Initialize the module.""" @@ -148,60 +204,6 @@ def update_hidden_service_domain(status=None): name=status['hs_hostname'], services=services) -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - results.append(action_utils.diagnose_port_listening(9050, 'tcp4')) - results.append(action_utils.diagnose_port_listening(9050, 'tcp6')) - results.append(action_utils.diagnose_port_listening(9040, 'tcp4')) - results.append(action_utils.diagnose_port_listening(9040, 'tcp6')) - results.append(action_utils.diagnose_port_listening(9053, 'udp4')) - results.append(action_utils.diagnose_port_listening(9053, 'udp6')) - - results.extend(_diagnose_control_port()) - - output = actions.superuser_run('tor', ['get-status']) - ports = json.loads(output)['ports'] - - results.append([ - _('Tor relay port available'), - 'passed' if 'orport' in ports else 'failed' - ]) - if 'orport' in ports: - results.append( - action_utils.diagnose_port_listening(int(ports['orport']), 'tcp4')) - results.append( - action_utils.diagnose_port_listening(int(ports['orport']), 'tcp6')) - - results.append([ - _('Obfs3 transport registered'), - 'passed' if 'obfs3' in ports else 'failed' - ]) - if 'obfs3' in ports: - results.append( - action_utils.diagnose_port_listening(int(ports['obfs3']), 'tcp4')) - results.append( - action_utils.diagnose_port_listening(int(ports['obfs3']), 'tcp6')) - - results.append([ - _('Obfs4 transport registered'), - 'passed' if 'obfs4' in ports else 'failed' - ]) - if 'obfs4' in ports: - results.append( - action_utils.diagnose_port_listening(int(ports['obfs4']), 'tcp4')) - results.append( - action_utils.diagnose_port_listening(int(ports['obfs4']), 'tcp6')) - - results.append(_diagnose_url_via_tor('http://www.debian.org', '4')) - results.append(_diagnose_url_via_tor('http://www.debian.org', '6')) - - results.append(_diagnose_tor_use('https://check.torproject.org', '4')) - results.append(_diagnose_tor_use('https://check.torproject.org', '6')) - - return results - - def _diagnose_control_port(): """Diagnose whether Tor control port is open on 127.0.0.1 only.""" results = [] diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 738c3c0c5..128e2fb34 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -22,13 +22,13 @@ import json from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall -from plinth.modules.users import register_group, add_user_to_share_group +from plinth.modules.users import add_user_to_share_group, register_group from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -74,20 +74,23 @@ class TransmissionApp(app_module.App): parent_url_name='apps') self.add(menu_item) - shortcut = frontpage.Shortcut( - 'shortcut-transmission', name, short_description=short_description, - icon=icon_filename, url='/transmission', clients=clients, - login_required=True, allowed_groups=[group[0]]) + shortcut = frontpage.Shortcut('shortcut-transmission', name, + short_description=short_description, + icon=icon_filename, url='/transmission', + clients=clients, login_required=True, + allowed_groups=[group[0]]) self.add(shortcut) firewall = Firewall('firewall-transmission', name, ports=['http', 'https'], is_external=True) self.add(firewall) - webserver = Webserver('webserver-transmission', 'transmission-plinth') + webserver = Webserver('webserver-transmission', 'transmission-plinth', + urls=['https://{host}/transmission']) self.add(webserver) - daemon = Daemon('daemon-transmission', managed_services[0]) + daemon = Daemon('daemon-transmission', managed_services[0], + listen_ports=[(9091, 'tcp4')]) self.add(daemon) @@ -115,15 +118,3 @@ def setup(helper, old_version=None): input=json.dumps(new_configuration).encode()) add_user_to_share_group(reserved_usernames[0], managed_services[0]) helper.call('post', app.enable) - - -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(9091, 'tcp4')) - results.extend( - action_utils.diagnose_url_on_all('https://{host}/transmission', - check_certificate=False)) - - return results diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 7b77faec6..14caf41d5 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -21,7 +21,7 @@ FreedomBox app to configure Tiny Tiny RSS. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon @@ -92,7 +92,8 @@ class TTRSSApp(app_module.App): is_external=True) self.add(firewall) - webserver = Webserver('webserver-ttrss', 'tt-rss-plinth') + webserver = Webserver('webserver-ttrss', 'tt-rss-plinth', + urls=['https://{host}/tt-rss']) self.add(webserver) daemon = Daemon('daemon-ttrss', managed_services[0]) @@ -138,17 +139,6 @@ def force_upgrade(helper, packages): return True -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.extend( - action_utils.diagnose_url_on_all('https://{host}/tt-rss', - check_certificate=False)) - - return results - - def backup_pre(packet): """Save database contents.""" actions.superuser_run('ttrss', ['dump-database']) diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index 69deb9d8d..c27378769 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -23,9 +23,10 @@ import subprocess from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, menu +from plinth.daemon import Daemon from plinth.utils import format_lazy version = 3 @@ -37,6 +38,8 @@ managed_packages = [ 'nslcd', 'samba-common-bin', 'slapd', 'tdb-tools' ] +managed_services = ['slapd'] + first_boot_steps = [ { 'id': 'users_firstboot', @@ -79,6 +82,20 @@ class UsersApp(app_module.App): 'users:index', parent_url_name='system') self.add(menu_item) + daemon = Daemon('daemon-users', managed_services[0], + listen_ports=[(389, 'tcp4'), (389, 'tcp6')]) + self.add(daemon) + + def diagnose(self): + """Run diagnostics and return the results.""" + results = super().diagnose() + + results.append(_diagnose_ldap_entry('dc=thisbox')) + results.append(_diagnose_ldap_entry('ou=people')) + results.append(_diagnose_ldap_entry('ou=groups')) + + return results + def init(): """Initialize the user module.""" @@ -96,20 +113,6 @@ def setup(helper, old_version=None): create_group('freedombox-share') -def diagnose(): - """Run diagnostics and return the results.""" - results = [] - - results.append(action_utils.diagnose_port_listening(389, 'tcp4')) - results.append(action_utils.diagnose_port_listening(389, 'tcp6')) - - results.append(_diagnose_ldap_entry('dc=thisbox')) - results.append(_diagnose_ldap_entry('ou=people')) - results.append(_diagnose_ldap_entry('ou=groups')) - - return results - - def _diagnose_ldap_entry(search_item): """Diagnose that an LDAP entry exists.""" result = 'failed' diff --git a/plinth/templates/toolbar.html b/plinth/templates/toolbar.html index 33514589e..cbd4947c9 100644 --- a/plinth/templates/toolbar.html +++ b/plinth/templates/toolbar.html @@ -61,7 +61,7 @@ From a1fd8f45be386d95e94b359b44ea33d1bce494b8 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 12 Dec 2019 00:01:15 -0500 Subject: [PATCH 29/43] cosmetic: Yapf and isort fixes Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/cockpit/views.py | 11 +++-------- plinth/modules/minidlna/views.py | 5 ++--- plinth/modules/mumble/views.py | 10 ++-------- plinth/modules/transmission/views.py | 1 + 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/plinth/modules/cockpit/views.py b/plinth/modules/cockpit/views.py index 98fa8e4dd..a42b81fa6 100644 --- a/plinth/modules/cockpit/views.py +++ b/plinth/modules/cockpit/views.py @@ -17,15 +17,10 @@ """ Views for the Cockpit module """ -from plinth.views import AppView -from plinth.modules.cockpit import ( - name, - description, - clients, - manual_page, - icon_filename, -) +from plinth.modules.cockpit import (clients, description, icon_filename, + manual_page, name) from plinth.modules.cockpit.utils import get_origin_domains, load_augeas +from plinth.views import AppView class CockpitAppView(AppView): diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py index a61066080..edc2d3134 100644 --- a/plinth/modules/minidlna/views.py +++ b/plinth/modules/minidlna/views.py @@ -23,8 +23,8 @@ 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 plinth.views import AppView from .forms import MiniDLNAServerForm @@ -58,8 +58,7 @@ class MiniDLNAAppView(AppView): else: actions.superuser_run( 'minidlna', - ['set-media-dir', '--dir', new_config['media_dir']] - ) + ['set-media-dir', '--dir', new_config['media_dir']]) messages.success(self.request, _('Updated media directory')) return super().form_valid(form) diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index c09ff30f9..20c05d39a 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -18,14 +18,8 @@ from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from plinth import actions -from plinth.modules.mumble import ( - name, - icon_filename, - description, - clients, - manual_page, - port_forwarding_info, -) +from plinth.modules.mumble import (clients, description, icon_filename, + manual_page, name, port_forwarding_info) from plinth.modules.mumble.forms import MumbleForm from plinth.views import AppView diff --git a/plinth/modules/transmission/views.py b/plinth/modules/transmission/views.py index 9794da18c..0633f9f9e 100644 --- a/plinth/modules/transmission/views.py +++ b/plinth/modules/transmission/views.py @@ -25,6 +25,7 @@ import socket from django.contrib import messages from django.utils.translation import ugettext as _ + from plinth import actions, views from plinth.modules import transmission From 97d8166f31898d93465cc6351cf3cb528fd81bfa Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 17 Dec 2019 14:39:03 -0800 Subject: [PATCH 30/43] daemon: Move diagnosing port listening into daemon module Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/action_utils.py | 65 ---------------------- plinth/daemon.py | 72 +++++++++++++++++++++++- plinth/modules/diagnostics/__init__.py | 4 +- plinth/modules/networks/__init__.py | 10 ++-- plinth/modules/tor/__init__.py | 28 ++++------ plinth/tests/test_daemon.py | 77 ++++++++++++++++++++++++-- 6 files changed, 158 insertions(+), 98 deletions(-) diff --git a/plinth/action_utils.py b/plinth/action_utils.py index aa5a2b7d8..3e483c14d 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -22,11 +22,9 @@ import logging import os import re import shutil -import socket import subprocess import tempfile -import psutil from django.utils.translation import ugettext as _ logger = logging.getLogger(__name__) @@ -285,69 +283,6 @@ def uwsgi_disable(config_name): service_start('uwsgi') -def diagnose_port_listening(port, kind='tcp', listen_address=None): - """Run a diagnostic on whether a port is being listened on. - - Kind must be one of inet, inet4, inet6, tcp, tcp4, tcp6, udp, - udp4, udp6, unix, all. See psutil.net_connection() for more - information. - """ - result = _check_port(port, kind, listen_address) - - if listen_address: - test = _('Listening on {kind} port {listen_address}:{port}') \ - .format(kind=kind, listen_address=listen_address, port=port) - else: - test = _('Listening on {kind} port {port}') \ - .format(kind=kind, port=port) - - return [test, 'passed' if result else 'failed'] - - -def _check_port(port, kind='tcp', listen_address=None): - """Return whether a port is being listened on.""" - run_kind = kind - - if kind == 'tcp4': - run_kind = 'tcp' - - if kind == 'udp4': - run_kind = 'udp' - - for connection in psutil.net_connections(run_kind): - # TCP connections must have status='listen' - if kind in ('tcp', 'tcp4', 'tcp6') and \ - connection.status != psutil.CONN_LISTEN: - continue - - # UDP connections must have empty remote address - if kind in ('udp', 'udp4', 'udp6') and \ - connection.raddr != (): - continue - - # Port should match - if connection.laddr[1] != port: - continue - - # Listen address if requested should match - if listen_address and connection.laddr[0] != listen_address: - continue - - # Special additional checks only for IPv4 - if kind != 'tcp4' and kind != 'udp4': - return True - - # Found socket is IPv4 - if connection.family == socket.AF_INET: - return True - - # Full IPv6 address range includes mapped IPv4 address also - if connection.laddr[0] == '::': - return True - - return False - - def check_url(url, kind=None, env=None, check_certificate=True, extra_options=None, wrapper=None, expected_output=None): """Check whether a URL is accessible.""" diff --git a/plinth/daemon.py b/plinth/daemon.py index 4e0bece32..c867e8171 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -18,6 +18,11 @@ Component for managing a background daemon or any systemd unit. """ +import socket + +import psutil +from django.utils.translation import ugettext as _ + from plinth import action_utils, actions, app @@ -70,8 +75,7 @@ class Daemon(app.LeaderComponent): results = [] results.append(self._diagnose_unit_is_running()) for port in self.listen_ports: - results.append( - action_utils.diagnose_port_listening(port[0], port[1])) + results.append(diagnose_port_listening(port[0], port[1])) return results @@ -90,3 +94,67 @@ def app_is_running(app_): return False return True + + +def diagnose_port_listening(port, kind='tcp', listen_address=None): + """Run a diagnostic on whether a port is being listened on. + + Kind must be one of inet, inet4, inet6, tcp, tcp4, tcp6, udp, + udp4, udp6, unix, all. See psutil.net_connection() for more + information. + + """ + result = _check_port(port, kind, listen_address) + + if listen_address: + test = _('Listening on {kind} port {listen_address}:{port}') \ + .format(kind=kind, listen_address=listen_address, port=port) + else: + test = _('Listening on {kind} port {port}') \ + .format(kind=kind, port=port) + + return [test, 'passed' if result else 'failed'] + + +def _check_port(port, kind='tcp', listen_address=None): + """Return whether a port is being listened on.""" + run_kind = kind + + if kind == 'tcp4': + run_kind = 'tcp' + + if kind == 'udp4': + run_kind = 'udp' + + for connection in psutil.net_connections(run_kind): + # TCP connections must have status='listen' + if kind in ('tcp', 'tcp4', 'tcp6') and \ + connection.status != psutil.CONN_LISTEN: + continue + + # UDP connections must have empty remote address + if kind in ('udp', 'udp4', 'udp6') and \ + connection.raddr != (): + continue + + # Port should match + if connection.laddr[1] != port: + continue + + # Listen address if requested should match + if listen_address and connection.laddr[0] != listen_address: + continue + + # Special additional checks only for IPv4 + if kind not in ('tcp4', 'udp4'): + return True + + # Found socket is IPv4 + if connection.family == socket.AF_INET: + return True + + # Full IPv6 address range includes mapped IPv4 address also + if connection.laddr[0] == '::': + return True + + return False diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index b74a66a8e..7d7faed3b 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -22,7 +22,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import action_utils from plinth import app as app_module -from plinth import menu +from plinth import daemon, menu from .manifest import backup # noqa, pylint: disable=unused-import @@ -58,7 +58,7 @@ class DiagnosticsApp(app_module.App): def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() - results.append(action_utils.diagnose_port_listening(8000, 'tcp4')) + results.append(daemon.diagnose_port_listening(8000, 'tcp4')) results.extend( action_utils.diagnose_url_on_all('http://{host}/plinth/', check_certificate=False)) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 5a1fa58f1..68a12dae3 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -23,9 +23,9 @@ from logging import Logger from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module -from plinth import menu, network +from plinth import daemon, menu, network version = 1 @@ -69,10 +69,8 @@ class NetworksApp(app_module.App): addresses = _get_interface_addresses(interfaces) for address in addresses: - results.append( - action_utils.diagnose_port_listening(53, 'tcp', address)) - results.append( - action_utils.diagnose_port_listening(53, 'udp', address)) + results.append(daemon.diagnose_port_listening(53, 'tcp', address)) + results.append(daemon.diagnose_port_listening(53, 'udp', address)) results.append(_diagnose_dnssec('4')) results.append(_diagnose_dnssec('6')) diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index fd6bfc9e0..f6ccefb73 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -25,7 +25,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import action_utils, actions from plinth import app as app_module from plinth import menu -from plinth.daemon import Daemon +from plinth.daemon import Daemon, diagnose_port_listening from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType from plinth.signals import domain_added, domain_removed @@ -113,35 +113,29 @@ class TorApp(app_module.App): ]) if 'orport' in ports: results.append( - action_utils.diagnose_port_listening(int(ports['orport']), - 'tcp4')) + diagnose_port_listening(int(ports['orport']), 'tcp4')) results.append( - action_utils.diagnose_port_listening(int(ports['orport']), - 'tcp6')) + diagnose_port_listening(int(ports['orport']), 'tcp6')) results.append([ _('Obfs3 transport registered'), 'passed' if 'obfs3' in ports else 'failed' ]) if 'obfs3' in ports: - results.append( - action_utils.diagnose_port_listening(int(ports['obfs3']), - 'tcp4')) - results.append( - action_utils.diagnose_port_listening(int(ports['obfs3']), - 'tcp6')) + results.append(diagnose_port_listening(int(ports['obfs3']), + 'tcp4')) + results.append(diagnose_port_listening(int(ports['obfs3']), + 'tcp6')) results.append([ _('Obfs4 transport registered'), 'passed' if 'obfs4' in ports else 'failed' ]) if 'obfs4' in ports: - results.append( - action_utils.diagnose_port_listening(int(ports['obfs4']), - 'tcp4')) - results.append( - action_utils.diagnose_port_listening(int(ports['obfs4']), - 'tcp6')) + results.append(diagnose_port_listening(int(ports['obfs4']), + 'tcp4')) + results.append(diagnose_port_listening(int(ports['obfs4']), + 'tcp6')) results.append(_diagnose_url_via_tor('http://www.debian.org', '4')) results.append(_diagnose_url_via_tor('http://www.debian.org', '6')) diff --git a/plinth/tests/test_daemon.py b/plinth/tests/test_daemon.py index a2101a86c..68c39999b 100644 --- a/plinth/tests/test_daemon.py +++ b/plinth/tests/test_daemon.py @@ -18,12 +18,13 @@ Test module for component managing system daemons and other systemd units. """ +import socket from unittest.mock import Mock, call, patch import pytest from plinth.app import App, FollowerComponent -from plinth.daemon import Daemon, app_is_running +from plinth.daemon import Daemon, app_is_running, diagnose_port_listening @pytest.fixture(name='daemon') @@ -93,22 +94,21 @@ def test_is_running(service_is_running, daemon): @patch('plinth.action_utils.service_is_running') -@patch('plinth.action_utils.diagnose_port_listening') -def test_diagnose(diagnose_port_listening, service_is_running, daemon): +@patch('plinth.daemon.diagnose_port_listening') +def test_diagnose(port_listening, service_is_running, daemon): """Test running diagnostics.""" def side_effect(port, kind): return [f'test-result-{port}-{kind}', 'passed'] daemon = Daemon('test-daemon', 'test-unit', listen_ports=[(8273, 'tcp4'), (345, 'udp')]) - diagnose_port_listening.side_effect = side_effect + port_listening.side_effect = side_effect service_is_running.return_value = True results = daemon.diagnose() assert results == [['Service test-unit is running', 'passed'], ['test-result-8273-tcp4', 'passed'], ['test-result-345-udp', 'passed']] - diagnose_port_listening.assert_has_calls( - [call(8273, 'tcp4'), call(345, 'udp')]) + port_listening.assert_has_calls([call(8273, 'tcp4'), call(345, 'udp')]) service_is_running.assert_has_calls([call('test-unit')]) service_is_running.return_value = False @@ -145,3 +145,68 @@ def test_app_is_running(service_is_running): service_is_running.return_value = True daemon2.is_running.return_value = True assert app_is_running(app) + + +@patch('psutil.net_connections') +def test_diagnose_port_listening(connections): + """Test running port listening diagnostics test.""" + connections.return_value = [ + Mock(status='LISTEN', laddr=('0.0.0.0', 1234), family=socket.AF_INET), + Mock(status='ESTABLISHED', laddr=('0.0.0.0', 2345), + family=socket.AF_INET), + Mock(raddr=(), laddr=('0.0.0.0', 3456), family=socket.AF_INET), + Mock(raddr=('1.1.1.1', 53), laddr=('0.0.0.0', 4567), + family=socket.AF_INET), + Mock(status='LISTEN', laddr=('::1', 5678), familiy=socket.AF_INET6), + Mock(status='LISTEN', laddr=('::', 6789), familiy=socket.AF_INET6), + Mock(raddr=(), laddr=('::1', 5678), familiy=socket.AF_INET6), + Mock(raddr=(), laddr=('::', 6789), familiy=socket.AF_INET6), + ] + + # Check that message is correct + results = diagnose_port_listening(1234) + assert results == ['Listening on tcp port 1234', 'passed'] + results = diagnose_port_listening(1234, 'tcp', '0.0.0.0') + assert results == ['Listening on tcp port 0.0.0.0:1234', 'passed'] + + # Failed results + results = diagnose_port_listening(4321) + assert results == ['Listening on tcp port 4321', 'failed'] + results = diagnose_port_listening(4321, 'tcp', '0.0.0.0') + assert results == ['Listening on tcp port 0.0.0.0:4321', 'failed'] + + # Check if psutil call is being made with right argument + results = diagnose_port_listening(1234, 'tcp') + connections.assert_called_with('tcp') + results = diagnose_port_listening(1234, 'tcp4') + connections.assert_called_with('tcp') + results = diagnose_port_listening(1234, 'tcp6') + connections.assert_called_with('tcp6') + results = diagnose_port_listening(3456, 'udp') + connections.assert_called_with('udp') + results = diagnose_port_listening(3456, 'udp4') + connections.assert_called_with('udp') + results = diagnose_port_listening(3456, 'udp6') + connections.assert_called_with('udp6') + + # TCP + assert diagnose_port_listening(1234)[1] == 'passed' + assert diagnose_port_listening(1000)[1] == 'failed' + assert diagnose_port_listening(2345)[1] == 'failed' + assert diagnose_port_listening(1234, 'tcp', '0.0.0.0')[1] == 'passed' + assert diagnose_port_listening(1234, 'tcp', '1.1.1.1')[1] == 'failed' + assert diagnose_port_listening(1234, 'tcp6')[1] == 'passed' + assert diagnose_port_listening(1234, 'tcp4')[1] == 'passed' + assert diagnose_port_listening(6789, 'tcp4')[1] == 'passed' + assert diagnose_port_listening(5678, 'tcp4')[1] == 'failed' + + # UDP + assert diagnose_port_listening(3456, 'udp')[1] == 'passed' + assert diagnose_port_listening(3000, 'udp')[1] == 'failed' + assert diagnose_port_listening(4567, 'udp')[1] == 'failed' + assert diagnose_port_listening(3456, 'udp', '0.0.0.0')[1] == 'passed' + assert diagnose_port_listening(3456, 'udp', '1.1.1.1')[1] == 'failed' + assert diagnose_port_listening(3456, 'udp6')[1] == 'passed' + assert diagnose_port_listening(3456, 'udp4')[1] == 'passed' + assert diagnose_port_listening(6789, 'udp4')[1] == 'passed' + assert diagnose_port_listening(5678, 'udp4')[1] == 'failed' From c617cecc02ee19d2ce773755445a17bb7155cb30 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 17 Dec 2019 14:58:31 -0800 Subject: [PATCH 31/43] daemon: Move diagnosing using netcat to daemon module Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/action_utils.py | 25 ------------------------- plinth/daemon.py | 26 ++++++++++++++++++++++++++ plinth/modules/tor/__init__.py | 6 +++--- plinth/tests/test_daemon.py | 25 ++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/plinth/action_utils.py b/plinth/action_utils.py index 3e483c14d..d38a393ce 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -356,31 +356,6 @@ def diagnose_url_on_all(url, **kwargs): return results -def diagnose_netcat(host, port, input='', negate=False): - """Run a diagnostic using netcat.""" - try: - process = subprocess.Popen(['nc', host, str(port)], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - process.communicate(input=input.encode()) - if process.returncode != 0: - result = 'failed' - else: - result = 'passed' - - if negate: - result = 'failed' if result == 'passed' else 'passed' - except Exception: - result = 'failed' - - test = _('Connect to {host}:{port}') - if negate: - test = _('Cannot connect to {host}:{port}') - - return [test.format(host=host, port=port), result] - - def get_addresses(): """Return a list of IP addresses and hostnames.""" addresses = get_ip_addresses() diff --git a/plinth/daemon.py b/plinth/daemon.py index c867e8171..d48166460 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -19,6 +19,7 @@ Component for managing a background daemon or any systemd unit. """ import socket +import subprocess import psutil from django.utils.translation import ugettext as _ @@ -158,3 +159,28 @@ def _check_port(port, kind='tcp', listen_address=None): return True return False + + +def diagnose_netcat(host, port, input='', negate=False): + """Run a diagnostic using netcat.""" + try: + process = subprocess.Popen(['nc', host, str(port)], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + process.communicate(input=input.encode()) + if process.returncode != 0: + result = 'failed' + else: + result = 'passed' + + if negate: + result = 'failed' if result == 'passed' else 'passed' + except Exception: + result = 'failed' + + test = _('Connect to {host}:{port}') + if negate: + test = _('Cannot connect to {host}:{port}') + + return [test.format(host=host, port=port), result] diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index f6ccefb73..bd97e8d2b 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -25,7 +25,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import action_utils, actions from plinth import app as app_module from plinth import menu -from plinth.daemon import Daemon, diagnose_port_listening +from plinth.daemon import Daemon, diagnose_netcat, diagnose_port_listening from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType from plinth.signals import domain_added, domain_removed @@ -212,8 +212,8 @@ def _diagnose_control_port(): negate = False results.append( - action_utils.diagnose_netcat(address['address'], 9051, - input='QUIT\n', negate=negate)) + diagnose_netcat(address['address'], 9051, input='QUIT\n', + negate=negate)) return results diff --git a/plinth/tests/test_daemon.py b/plinth/tests/test_daemon.py index 68c39999b..6a969fa6f 100644 --- a/plinth/tests/test_daemon.py +++ b/plinth/tests/test_daemon.py @@ -24,7 +24,8 @@ from unittest.mock import Mock, call, patch import pytest from plinth.app import App, FollowerComponent -from plinth.daemon import Daemon, app_is_running, diagnose_port_listening +from plinth.daemon import (Daemon, app_is_running, diagnose_netcat, + diagnose_port_listening) @pytest.fixture(name='daemon') @@ -210,3 +211,25 @@ def test_diagnose_port_listening(connections): assert diagnose_port_listening(3456, 'udp4')[1] == 'passed' assert diagnose_port_listening(6789, 'udp4')[1] == 'passed' assert diagnose_port_listening(5678, 'udp4')[1] == 'failed' + + +@patch('subprocess.Popen') +def test_diagnose_netcat(popen): + """Test running diagnostic test using netcat.""" + popen().returncode = 0 + result = diagnose_netcat('test-host', 3300, input='test-input') + assert result == ['Connect to test-host:3300', 'passed'] + assert popen.mock_calls[1][1] == (['nc', 'test-host', '3300'], ) + assert popen.mock_calls[2] == call().communicate(input=b'test-input') + + result = diagnose_netcat('test-host', 3300, input='test-input', + negate=True) + assert result == ['Cannot connect to test-host:3300', 'failed'] + + popen().returncode = 1 + result = diagnose_netcat('test-host', 3300, input='test-input') + assert result == ['Connect to test-host:3300', 'failed'] + + result = diagnose_netcat('test-host', 3300, input='test-input', + negate=True) + assert result == ['Cannot connect to test-host:3300', 'passed'] From e0dba2cc1751e9915782d11ffaca5111bc21bf2f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 17 Dec 2019 15:14:41 -0800 Subject: [PATCH 32/43] apache: Move diagnostics for checking URLs into apache module Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/upgrades | 5 +- plinth/action_utils.py | 76 ------------ plinth/modules/apache/components.py | 84 ++++++++++++- .../modules/apache/tests/test_components.py | 110 +++++++++++++++++- plinth/modules/diagnostics/__init__.py | 6 +- plinth/modules/diaspora/__init__.py | 14 +-- plinth/modules/letsencrypt/__init__.py | 6 +- plinth/modules/privoxy/__init__.py | 5 +- plinth/modules/tahoe/__init__.py | 17 ++- plinth/modules/tor/__init__.py | 7 +- 10 files changed, 217 insertions(+), 113 deletions(-) diff --git a/actions/upgrades b/actions/upgrades index 14b1df60c..b64a18603 100755 --- a/actions/upgrades +++ b/actions/upgrades @@ -26,7 +26,7 @@ import re import subprocess import sys -from plinth import action_utils +from plinth.modules.apache.components import check_url AUTO_CONF_FILE = '/etc/apt/apt.conf.d/20auto-upgrades' LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades.log' @@ -129,8 +129,7 @@ def _is_release_file_available(protocol): if protocol == 'tor+http': wrapper = 'torsocks' - result = action_utils.check_url(BUSTER_BACKPORTS_RELEASE_FILE_URL, - wrapper=wrapper) + result = check_url(BUSTER_BACKPORTS_RELEASE_FILE_URL, wrapper=wrapper) return result == 'passed' diff --git a/plinth/action_utils.py b/plinth/action_utils.py index d38a393ce..caa0a2754 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -20,13 +20,10 @@ Python action utility functions. import logging import os -import re import shutil import subprocess import tempfile -from django.utils.translation import ugettext as _ - logger = logging.getLogger(__name__) UWSGI_ENABLED_PATH = '/etc/uwsgi/apps-enabled/{config_name}.ini' @@ -283,79 +280,6 @@ def uwsgi_disable(config_name): service_start('uwsgi') -def check_url(url, kind=None, env=None, check_certificate=True, - extra_options=None, wrapper=None, expected_output=None): - """Check whether a URL is accessible.""" - command = ['curl', '--location', '-f', '-w', '%{response_code}'] - - if kind == '6': - # extract zone index - match = re.match(r'(.*://)\[(.*)%(?P.*)\](.*)', url) - if match: - command = command + ['--interface', match.group('zone')] - url = '{0}[{1}]{2}'.format(*match.group(1, 2, 4)) - - command.append(url) - - if wrapper: - command.insert(0, wrapper) - - if not check_certificate: - command.append('-k') - - if extra_options: - command.extend(extra_options) - - if kind: - command.append({'4': '-4', '6': '-6'}[kind]) - - try: - process = subprocess.run(command, env=env, check=True, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - result = 'passed' - if expected_output and expected_output not in process.stdout.decode(): - result = 'failed' - except subprocess.CalledProcessError as exception: - result = 'failed' - # Authorization failed is a success - if exception.stdout.decode().strip() in ('401', '405'): - result = 'passed' - except FileNotFoundError: - result = 'error' - - return result - - -def diagnose_url(url, kind=None, env=None, check_certificate=True, - extra_options=None, wrapper=None, expected_output=None): - """Run a diagnostic on whether a URL is accessible. - - Kind can be '4' for IPv4 or '6' for IPv6. - """ - result = check_url(url, kind, env, check_certificate, extra_options, - wrapper, expected_output) - - if kind: - return [ - _('Access URL {url} on tcp{kind}').format(url=url, kind=kind), - result - ] - - return [_('Access URL {url}').format(url=url), result] - - -def diagnose_url_on_all(url, **kwargs): - """Run a diagnostic on whether a URL is accessible.""" - results = [] - for address in get_addresses(): - current_url = url.format(host=address['url_address']) - results.append( - diagnose_url(current_url, kind=address['kind'], **kwargs)) - - return results - - def get_addresses(): """Return a list of IP addresses and hostnames.""" addresses = get_ip_addresses() diff --git a/plinth/modules/apache/components.py b/plinth/modules/apache/components.py index 4284c09a8..61dc84a42 100644 --- a/plinth/modules/apache/components.py +++ b/plinth/modules/apache/components.py @@ -18,6 +18,11 @@ App component for other apps to use Apache configuration functionality. """ +import re +import subprocess + +from django.utils.translation import ugettext as _ + from plinth import action_utils, actions, app @@ -72,11 +77,9 @@ class Webserver(app.LeaderComponent): for url in self.urls: if '{host}' in url: results.extend( - action_utils.diagnose_url_on_all(url, - check_certificate=False)) + diagnose_url_on_all(url, check_certificate=False)) else: - results.append( - action_utils.diagnose_url(url, check_certificate=False)) + results.append(diagnose_url(url, check_certificate=False)) return results @@ -116,3 +119,76 @@ class Uwsgi(app.LeaderComponent): """Return whether the uWSGI daemon is running with configuration.""" return action_utils.uwsgi_is_enabled(self.uwsgi_name) \ and action_utils.service_is_running('uwsgi') + + +def diagnose_url(url, kind=None, env=None, check_certificate=True, + extra_options=None, wrapper=None, expected_output=None): + """Run a diagnostic on whether a URL is accessible. + + Kind can be '4' for IPv4 or '6' for IPv6. + """ + result = check_url(url, kind, env, check_certificate, extra_options, + wrapper, expected_output) + + if kind: + return [ + _('Access URL {url} on tcp{kind}').format(url=url, kind=kind), + result + ] + + return [_('Access URL {url}').format(url=url), result] + + +def diagnose_url_on_all(url, **kwargs): + """Run a diagnostic on whether a URL is accessible.""" + results = [] + for address in action_utils.get_addresses(): + current_url = url.format(host=address['url_address']) + results.append( + diagnose_url(current_url, kind=address['kind'], **kwargs)) + + return results + + +def check_url(url, kind=None, env=None, check_certificate=True, + extra_options=None, wrapper=None, expected_output=None): + """Check whether a URL is accessible.""" + command = ['curl', '--location', '-f', '-w', '%{response_code}'] + + if kind == '6': + # extract zone index + match = re.match(r'(.*://)\[(.*)%(?P.*)\](.*)', url) + if match: + command = command + ['--interface', match.group('zone')] + url = '{0}[{1}]{2}'.format(*match.group(1, 2, 4)) + + command.append(url) + + if wrapper: + command.insert(0, wrapper) + + if not check_certificate: + command.append('-k') + + if extra_options: + command.extend(extra_options) + + if kind: + command.append({'4': '-4', '6': '-6'}[kind]) + + try: + process = subprocess.run(command, env=env, check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + result = 'passed' + if expected_output and expected_output not in process.stdout.decode(): + result = 'failed' + except subprocess.CalledProcessError as exception: + result = 'failed' + # Authorization failed is a success + if exception.stdout.decode().strip() in ('401', '405'): + result = 'passed' + except FileNotFoundError: + result = 'error' + + return result diff --git a/plinth/modules/apache/tests/test_components.py b/plinth/modules/apache/tests/test_components.py index 0c4b3f4d4..5a5c890da 100644 --- a/plinth/modules/apache/tests/test_components.py +++ b/plinth/modules/apache/tests/test_components.py @@ -18,11 +18,14 @@ Test module for webserver components. """ +import subprocess from unittest.mock import call, patch import pytest -from plinth.modules.apache.components import Uwsgi, Webserver +from plinth.modules.apache.components import (Uwsgi, Webserver, check_url, + diagnose_url, + diagnose_url_on_all) def test_webserver_init(): @@ -80,8 +83,8 @@ def test_webserver_disable(superuser_run): ]) -@patch('plinth.action_utils.diagnose_url') -@patch('plinth.action_utils.diagnose_url_on_all') +@patch('plinth.modules.apache.components.diagnose_url') +@patch('plinth.modules.apache.components.diagnose_url_on_all') def test_webserver_diagnose(diagnose_url_on_all, diagnose_url): """Test running diagnostics.""" def on_all_side_effect(url, check_certificate): @@ -177,3 +180,104 @@ def test_uwsgi_is_running(uwsgi_is_enabled, service_is_running): uwsgi_is_enabled.return_value = False service_is_running.return_value = False assert not uwsgi.is_running() + + +@patch('plinth.modules.apache.components.check_url') +@patch('plinth.action_utils.get_addresses') +def test_diagnose_url(get_addresses, check): + """Test diagnosing a URL.""" + args = { + 'url': 'https://localhost/test', + 'kind': '4', + 'env': { + 'test': 'value' + }, + 'check_certificate': False, + 'extra_options': { + 'test-1': 'value-1' + }, + 'wrapper': 'test-wrapper', + 'expected_output': 'test-expected' + } + check.return_value = 'passed' + result = diagnose_url(**args) + assert result == ['Access URL https://localhost/test on tcp4', 'passed'] + + check.return_value = 'failed' + result = diagnose_url(**args) + assert result == ['Access URL https://localhost/test on tcp4', 'failed'] + + del args['kind'] + args['url'] = 'https://{host}/test' + check.return_value = 'passed' + get_addresses.return_value = [{ + 'kind': '4', + 'address': 'test-host-1', + 'numeric': False, + 'url_address': 'test-host-1' + }, { + 'kind': '6', + 'address': 'test-host-2', + 'numeric': False, + 'url_address': 'test-host-2' + }] + result = diagnose_url_on_all(**args) + assert result == [ + ['Access URL https://test-host-1/test on tcp4', 'passed'], + ['Access URL https://test-host-2/test on tcp6', 'passed'], + ] + + +@patch('subprocess.run') +def test_check_url(run): + """Test checking whether a URL is accessible.""" + url = 'http://localhost/test' + basic_command = ['curl', '--location', '-f', '-w', '%{response_code}'] + extra_args = {'env': None, 'check': True, 'stdout': -1, 'stderr': -1} + + # Basic + assert check_url(url) == 'passed' + run.assert_called_with(basic_command + [url], **extra_args) + + # Wrapper + check_url(url, wrapper='test-wrapper') + run.assert_called_with(['test-wrapper'] + basic_command + [url], + **extra_args) + + # No certificate check + check_url(url, check_certificate=False) + run.assert_called_with(basic_command + [url, '-k'], **extra_args) + + # Extra options + check_url(url, extra_options=['test-opt1', 'test-opt2']) + run.assert_called_with(basic_command + [url, 'test-opt1', 'test-opt2'], + **extra_args) + + # TCP4/TCP6 + check_url(url, kind='4') + run.assert_called_with(basic_command + [url, '-4'], **extra_args) + check_url(url, kind='6') + run.assert_called_with(basic_command + [url, '-6'], **extra_args) + + # IPv6 Link Local URLs + check_url('https://[::2%eth0]/test', kind='6') + run.assert_called_with( + basic_command + ['--interface', 'eth0', 'https://[::2]/test', '-6'], + **extra_args) + + # Failure + exception = subprocess.CalledProcessError(returncode=1, cmd=['curl']) + run.side_effect = exception + run.side_effect.stdout = b'500' + assert check_url(url) == 'failed' + + # Return code 401, 405 + run.side_effect = exception + run.side_effect.stdout = b' 401 ' + assert check_url(url) == 'passed' + run.side_effect.stdout = b'405\n' + assert check_url(url) == 'passed' + + # Error + run.side_effect = FileNotFoundError() + assert check_url(url) == 'error' diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index 7d7faed3b..9122aaf8d 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -20,9 +20,9 @@ FreedomBox app for system diagnostics. from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils from plinth import app as app_module from plinth import daemon, menu +from plinth.modules.apache.components import diagnose_url_on_all from .manifest import backup # noqa, pylint: disable=unused-import @@ -60,8 +60,8 @@ class DiagnosticsApp(app_module.App): results = super().diagnose() results.append(daemon.diagnose_port_listening(8000, 'tcp4')) results.extend( - action_utils.diagnose_url_on_all('http://{host}/plinth/', - check_certificate=False)) + diagnose_url_on_all('http://{host}/plinth/', + check_certificate=False)) return results diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index fd166549f..4a9a9501b 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -19,12 +19,12 @@ import os import augeas from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon from plinth.errors import DomainNotRegisteredError -from plinth.modules.apache.components import Webserver +from plinth.modules.apache.components import Webserver, diagnose_url from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy @@ -110,13 +110,13 @@ class DiasporaApp(app_module.App): results = super().diagnose() results.append( - action_utils.diagnose_url('http://diaspora.localhost', kind='4', - check_certificate=False)) + diagnose_url('http://diaspora.localhost', kind='4', + check_certificate=False)) results.append( - action_utils.diagnose_url('http://diaspora.localhost', kind='6', - check_certificate=False)) + diagnose_url('http://diaspora.localhost', kind='6', + check_certificate=False)) results.append( - action_utils.diagnose_url( + diagnose_url( 'http://diaspora.{}'.format(get_configured_domain_name()), kind='4', check_certificate=False)) diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index bcec0d953..2eb1ca45d 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -24,11 +24,12 @@ import pathlib from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +from plinth import actions from plinth import app as app_module from plinth import cfg, menu from plinth.errors import ActionError from plinth.modules import names +from plinth.modules.apache.components import diagnose_url from plinth.modules.names.components import DomainType from plinth.signals import domain_added, domain_removed, post_module_loading from plinth.utils import format_lazy @@ -91,8 +92,7 @@ class LetsEncryptApp(app_module.App): for domain in names.components.DomainName.list(): if domain.domain_type.can_have_certificate: - results.append( - action_utils.diagnose_url('https://' + domain.name)) + results.append(diagnose_url('https://' + domain.name)) return results diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index c2c91b353..dfeeeebe9 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -25,6 +25,7 @@ from plinth import action_utils, 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 diagnose_url from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy from plinth.views import AppView @@ -97,7 +98,7 @@ class PrivoxyApp(app_module.App): def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() - results.append(action_utils.diagnose_url('https://www.debian.org')) + results.append(diagnose_url('https://www.debian.org')) results.extend(diagnose_url_with_proxy()) return results @@ -137,7 +138,7 @@ def diagnose_url_with_proxy(): proxy = 'http://{host}:8118/'.format(host=address['url_address']) env = {'https_proxy': proxy} - result = action_utils.diagnose_url(url, kind=address['kind'], env=env) + result = diagnose_url(url, kind=address['kind'], env=env) result[0] = _('Access {url} with proxy {proxy} on tcp{kind}') \ .format(url=url, proxy=proxy, kind=address['kind']) results.append(result) diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index fd11180bc..7d8724ffd 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -23,11 +23,11 @@ import os from django.utils.translation import ugettext_lazy as _ -from plinth import action_utils, actions +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.apache.components import Webserver, diagnose_url from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy @@ -96,13 +96,12 @@ class TahoeApp(app_module.App): """Run diagnostics and return the results.""" results = super().diagnose() results.extend([ - action_utils.diagnose_url('http://localhost:5678', kind='4', - check_certificate=False), - action_utils.diagnose_url('http://localhost:5678', kind='6', - check_certificate=False), - action_utils.diagnose_url( - 'http://{}:5678'.format(get_configured_domain_name()), - kind='4', check_certificate=False) + diagnose_url('http://localhost:5678', kind='4', + check_certificate=False), + diagnose_url('http://localhost:5678', kind='6', + check_certificate=False), + diagnose_url('http://{}:5678'.format(get_configured_domain_name()), + kind='4', check_certificate=False) ]) return results diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index bd97e8d2b..0940affae 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -26,6 +26,7 @@ from plinth import action_utils, actions from plinth import app as app_module from plinth import menu from plinth.daemon import Daemon, diagnose_netcat, diagnose_port_listening +from plinth.modules.apache.components import diagnose_url from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType from plinth.signals import domain_added, domain_removed @@ -220,7 +221,7 @@ def _diagnose_control_port(): def _diagnose_url_via_tor(url, kind=None): """Diagnose whether a URL is reachable via Tor.""" - result = action_utils.diagnose_url(url, kind=kind, wrapper='torsocks') + result = diagnose_url(url, kind=kind, wrapper='torsocks') result[0] = _('Access URL {url} on tcp{kind} via Tor') \ .format(url=url, kind=kind) @@ -230,8 +231,8 @@ def _diagnose_url_via_tor(url, kind=None): def _diagnose_tor_use(url, kind=None): """Diagnose whether webpage at URL reports that we are using Tor.""" expected_output = 'Congratulations. This browser is configured to use Tor.' - result = action_utils.diagnose_url(url, kind=kind, wrapper='torsocks', - expected_output=expected_output) + result = diagnose_url(url, kind=kind, wrapper='torsocks', + expected_output=expected_output) result[0] = _('Confirm Tor usage at {url} on tcp{kind}') \ .format(url=url, kind=kind) From 636aa05b6670685ada0c60232927bbde3739c66c Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 27 Dec 2019 13:02:27 -0800 Subject: [PATCH 33/43] app: Implement API to check if app/component has diagnostics - Use the API to skip diagnosing apps that don't implement diagnostics. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/app.py | 48 +++++++++++++++++++++++ plinth/modules/diagnostics/diagnostics.py | 3 ++ plinth/tests/test_app.py | 27 +++++++++++++ 3 files changed, 78 insertions(+) diff --git a/plinth/app.py b/plinth/app.py index 70c027639..64097b359 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -115,6 +115,8 @@ class App: Results are typically collected by diagnosing each component of the app and then supplementing the results with any app level diagnostic tests. + Also see :meth:`.has_diagnostics`. + """ results = [] for component in self.components.values(): @@ -122,6 +124,36 @@ class App: return results + def has_diagnostics(self): + """Return whether at least one diagnostic test is implemented. + + If this method returns True, a button or menu item is shown to the + user to run diagnostics on this app. When the action is selected by the + user, the :meth:`.diagnose` method is called and the results are + presented to the user. Additionally collection of diagnostic results of + all apps can be obtained by the user from the Diagnostics module in + System section. + + If a component of this app implements a diagnostic test, this method + returns True. + + Further, if a subclass of App overrides the :meth:`.diagnose` method, + it is assumed that it is for implementing diagnostic tests and this + method returns True for such an app. Override this method if this + default behavior does not fit the needs. + + """ + # App implements some diagnostics + if self.__class__.diagnose is not App.diagnose: + return True + + # Any of the components implement diagnostics + for component in self.components.values(): + if component.has_diagnostics(): + return True + + return False + class Component: """Interface for an app component.""" @@ -148,9 +180,25 @@ class Component: result. The test result is a string enumeration from 'failed', 'passed' and 'error'. + Also see :meth:`.has_diagnostics`. + """ return [] + def has_diagnostics(self): + """Return whether at least one diagnostic test is implemented. + + If this method return True, the :meth:`App.has_diagnostics`. also + returns True. + + If a subclass of Component overrides the :meth:`.diagnose` method, it + is assumed that it is for implementing diagnostic tests and this method + returns True for such a component. Override this method if this default + behavior does not fit the needs. + + """ + return self.__class__.diagnose is not Component.diagnose + class FollowerComponent(Component): """Interface for an app component that follows other components. diff --git a/plinth/modules/diagnostics/diagnostics.py b/plinth/modules/diagnostics/diagnostics.py index 4eb1b3c45..0b637527c 100644 --- a/plinth/modules/diagnostics/diagnostics.py +++ b/plinth/modules/diagnostics/diagnostics.py @@ -112,6 +112,9 @@ def run_on_all_enabled_modules(): if not app.is_enabled(): continue + if not app.has_diagnostics(): + continue + apps.append((app.app_id, app)) current_results['results'][app.app_id] = None diff --git a/plinth/tests/test_app.py b/plinth/tests/test_app.py index ceebb3df8..b91332251 100644 --- a/plinth/tests/test_app.py +++ b/plinth/tests/test_app.py @@ -19,6 +19,7 @@ Test module for App, base class for all applications. """ import collections +from unittest.mock import patch import pytest @@ -193,6 +194,23 @@ def test_app_diagnose(app_with_components): ('test-result-test-leader-2', 'success')] +def test_app_has_diagnostics(app_with_components): + """Test checking if app has diagnostics implemented.""" + app = app_with_components + + # App with components that has diagnostics + assert app.has_diagnostics() + + # App with components that don't have diagnostics + app.remove('test-leader-1') + app.remove('test-leader-2') + assert not app.has_diagnostics() + + # App with app-level diagnostics + with patch.object(AppTest, 'diagnose', return_value=[('test1', 'passed')]): + assert app.has_diagnostics() + + def test_component_initialization(): """Test that component is initialized properly.""" with pytest.raises(ValueError): @@ -209,6 +227,15 @@ def test_component_diagnose(): assert component.diagnose() == [] +def test_component_has_diagnostics(): + """Test checking if component has diagnostics implemented.""" + component = LeaderTest('test-leader-1') + assert component.has_diagnostics() + + component = FollowerComponent('test-follower-1') + assert not component.has_diagnostics() + + def test_follower_component_initialization(): """Test that follower component is initialized properly.""" component = FollowerComponent('test-follower-1') From f65b4ec40738c59e97ba66a3cfb7ea32f481420f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 17 Dec 2019 15:54:16 -0800 Subject: [PATCH 34/43] views: Don't require sending diagnostics module name separately - Reuse the app_id already available to the view. - Implement automatically detecting if an app has implemented diagnostics. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/bind/views.py | 1 - plinth/modules/cockpit/views.py | 1 - plinth/modules/coquelicot/views.py | 1 - plinth/modules/datetime/views.py | 1 - plinth/modules/deluge/urls.py | 1 - plinth/modules/diaspora/views.py | 1 - plinth/modules/ejabberd/views.py | 1 - plinth/modules/gitweb/views.py | 1 - plinth/modules/i2p/views.py | 1 - plinth/modules/ikiwiki/views.py | 1 - plinth/modules/infinoted/__init__.py | 1 - plinth/modules/letsencrypt/views.py | 3 ++- plinth/modules/matrixsynapse/views.py | 1 - plinth/modules/mediawiki/views.py | 1 - plinth/modules/minetest/views.py | 1 - plinth/modules/minidlna/views.py | 1 - plinth/modules/mldonkey/urls.py | 1 - plinth/modules/mumble/views.py | 1 - plinth/modules/networks/networks.py | 3 ++- plinth/modules/openvpn/views.py | 3 ++- plinth/modules/privoxy/__init__.py | 1 - plinth/modules/quassel/views.py | 1 - plinth/modules/radicale/views.py | 1 - plinth/modules/repro/__init__.py | 1 - plinth/modules/roundcube/urls.py | 1 - plinth/modules/samba/views.py | 1 - plinth/modules/searx/views.py | 1 - plinth/modules/shadowsocks/views.py | 1 - plinth/modules/syncthing/urls.py | 1 - plinth/modules/tahoe/views.py | 1 - plinth/modules/tor/views.py | 3 ++- plinth/modules/transmission/views.py | 1 - plinth/modules/ttrss/urls.py | 1 - plinth/modules/users/views.py | 1 - plinth/templates/toolbar.html | 4 ++-- plinth/views.py | 5 ++--- 36 files changed, 12 insertions(+), 39 deletions(-) diff --git a/plinth/modules/bind/views.py b/plinth/modules/bind/views.py index e394b396a..fe01456ae 100644 --- a/plinth/modules/bind/views.py +++ b/plinth/modules/bind/views.py @@ -31,7 +31,6 @@ from .forms import BindForm class BindAppView(AppView): # pylint: disable=too-many-ancestors """A specialized view for configuring Bind.""" app_id = 'bind' - diagnostics_module_name = 'bind' name = name description = description show_status_block = True diff --git a/plinth/modules/cockpit/views.py b/plinth/modules/cockpit/views.py index a42b81fa6..a7ca6fa53 100644 --- a/plinth/modules/cockpit/views.py +++ b/plinth/modules/cockpit/views.py @@ -27,7 +27,6 @@ class CockpitAppView(AppView): app_id = 'cockpit' name = name description = description - diagnostics_module_name = 'cockpit' show_status_block = True clients = clients manual_page = manual_page diff --git a/plinth/modules/coquelicot/views.py b/plinth/modules/coquelicot/views.py index 6a59a4c56..619ccc1b0 100644 --- a/plinth/modules/coquelicot/views.py +++ b/plinth/modules/coquelicot/views.py @@ -35,7 +35,6 @@ class CoquelicotAppView(views.AppView): clients = clients name = name description = description - diagnostics_module_name = 'coquelicot' app_id = 'coquelicot' form_class = CoquelicotForm show_status_block = True diff --git a/plinth/modules/datetime/views.py b/plinth/modules/datetime/views.py index a51906bed..519ee72fb 100644 --- a/plinth/modules/datetime/views.py +++ b/plinth/modules/datetime/views.py @@ -37,7 +37,6 @@ class DateTimeAppView(AppView): description = datetime.description form_class = DateTimeForm app_id = 'datetime' - diagnostics_module_name = 'datetime' manual_page = datetime.manual_page def get_initial(self): diff --git a/plinth/modules/deluge/urls.py b/plinth/modules/deluge/urls.py index 80ba1e6ce..4da1fa6dc 100644 --- a/plinth/modules/deluge/urls.py +++ b/plinth/modules/deluge/urls.py @@ -27,7 +27,6 @@ urlpatterns = [ url( r'^apps/deluge/$', AppView.as_view(name=deluge.name, description=deluge.description, - diagnostics_module_name='deluge', clients=deluge.clients, app_id='deluge', manual_page=deluge.manual_page, icon_filename=deluge.icon_filename), name='index'), diff --git a/plinth/modules/diaspora/views.py b/plinth/modules/diaspora/views.py index 751c9780a..fd17defc1 100644 --- a/plinth/modules/diaspora/views.py +++ b/plinth/modules/diaspora/views.py @@ -60,7 +60,6 @@ class DiasporaAppView(AppView): form_class = DiasporaAppForm app_id = 'diaspora' template_name = 'diaspora-post-setup.html' - diagnostics_module_name = 'diaspora' name = diaspora.name def dispatch(self, request, *args, **kwargs): diff --git a/plinth/modules/ejabberd/views.py b/plinth/modules/ejabberd/views.py index 65523e4d5..24f86e781 100644 --- a/plinth/modules/ejabberd/views.py +++ b/plinth/modules/ejabberd/views.py @@ -34,7 +34,6 @@ class EjabberdAppView(AppView): template_name = 'ejabberd.html' name = ejabberd.name description = ejabberd.description - diagnostics_module_name = 'ejabberd' form_class = EjabberdForm manual_page = ejabberd.manual_page port_forwarding_info = ejabberd.port_forwarding_info diff --git a/plinth/modules/gitweb/views.py b/plinth/modules/gitweb/views.py index da53efe86..469f9ac42 100644 --- a/plinth/modules/gitweb/views.py +++ b/plinth/modules/gitweb/views.py @@ -40,7 +40,6 @@ class GitwebAppView(views.AppView): clients = gitweb.clients name = gitweb.name description = gitweb.description - diagnostics_module_name = 'gitweb' app_id = 'gitweb' show_status_block = False template_name = 'gitweb_configure.html' diff --git a/plinth/modules/i2p/views.py b/plinth/modules/i2p/views.py index e36544db1..c40856fa7 100644 --- a/plinth/modules/i2p/views.py +++ b/plinth/modules/i2p/views.py @@ -44,7 +44,6 @@ class I2PAppView(AppView): clients = i2p.clients name = i2p.name description = i2p.description - diagnostics_module_name = i2p.service_name show_status_block = True template_name = 'i2p.html' icon_filename = i2p.icon_filename diff --git a/plinth/modules/ikiwiki/views.py b/plinth/modules/ikiwiki/views.py index 2f1f1524e..fae514969 100644 --- a/plinth/modules/ikiwiki/views.py +++ b/plinth/modules/ikiwiki/views.py @@ -35,7 +35,6 @@ class IkiwikiAppView(views.AppView): app_id = 'ikiwiki' name = ikiwiki.name description = ikiwiki.description - diagnostics_module_name = 'ikiwiki' show_status_block = False template_name = 'ikiwiki_configure.html' manual_page = ikiwiki.manual_page diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 3d2e2d060..12b50d21a 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -102,7 +102,6 @@ def init(): class InfinotedAppView(AppView): app_id = 'infinoted' - diagnostics_module_name = 'infinoted' name = name description = description clients = clients diff --git a/plinth/modules/letsencrypt/views.py b/plinth/modules/letsencrypt/views.py index 183c4ed50..0b0ed16a7 100644 --- a/plinth/modules/letsencrypt/views.py +++ b/plinth/modules/letsencrypt/views.py @@ -38,11 +38,12 @@ def index(request): status = letsencrypt.get_status() return TemplateResponse( request, 'letsencrypt.html', { + 'app_id': 'letsencrypt', 'name': letsencrypt.name, 'description': letsencrypt.description, 'status': status, 'manual_page': letsencrypt.manual_page, - 'diagnostics_module_name': 'letsencrypt', + 'has_diagnostics': True, 'is_enabled': letsencrypt.app.is_enabled(), }) diff --git a/plinth/modules/matrixsynapse/views.py b/plinth/modules/matrixsynapse/views.py index f7cbcec09..7d21eab5f 100644 --- a/plinth/modules/matrixsynapse/views.py +++ b/plinth/modules/matrixsynapse/views.py @@ -65,7 +65,6 @@ class MatrixSynapseAppView(AppView): template_name = 'matrix-synapse.html' name = matrixsynapse.name description = matrixsynapse.description - diagnostics_module_name = 'matrixsynapse' form_class = MatrixSynapseForm port_forwarding_info = matrixsynapse.port_forwarding_info icon_filename = matrixsynapse.icon_filename diff --git a/plinth/modules/mediawiki/views.py b/plinth/modules/mediawiki/views.py index dddd6eb51..8285587bb 100644 --- a/plinth/modules/mediawiki/views.py +++ b/plinth/modules/mediawiki/views.py @@ -37,7 +37,6 @@ class MediaWikiAppView(views.AppView): clients = mediawiki.clients name = mediawiki.name description = mediawiki.description - diagnostics_module_name = 'mediawiki' app_id = 'mediawiki' form_class = MediaWikiForm manual_page = mediawiki.manual_page diff --git a/plinth/modules/minetest/views.py b/plinth/modules/minetest/views.py index efc0cd85d..f436c5ec9 100644 --- a/plinth/modules/minetest/views.py +++ b/plinth/modules/minetest/views.py @@ -32,7 +32,6 @@ from .forms import MinetestForm class MinetestAppView(AppView): # pylint: disable=too-many-ancestors """A specialized view for configuring minetest.""" app_id = 'minetest' - diagnostics_module_name = 'minetest' name = minetest.name description = description show_status_block = True diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py index edc2d3134..43fde3b91 100644 --- a/plinth/modules/minidlna/views.py +++ b/plinth/modules/minidlna/views.py @@ -34,7 +34,6 @@ class MiniDLNAAppView(AppView): name = minidlna.name description = minidlna.description form_class = MiniDLNAServerForm - diagnostics_module_name = 'minidlna' icon_filename = minidlna.icon_filename def get_initial(self): diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py index 57f1e0500..71f84f5b6 100644 --- a/plinth/modules/mldonkey/urls.py +++ b/plinth/modules/mldonkey/urls.py @@ -27,7 +27,6 @@ urlpatterns = [ url( r'^apps/mldonkey/$', AppView.as_view(app_id='mldonkey', name=mldonkey.name, - diagnostics_module_name='mldonkey', description=mldonkey.description, clients=mldonkey.clients, manual_page=mldonkey.manual_page, diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index 20c05d39a..363856fc3 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -26,7 +26,6 @@ from plinth.views import AppView class MumbleAppView(AppView): app_id = 'mumble' - diagnostics_module_name = 'mumble' name = name description = description clients = clients diff --git a/plinth/modules/networks/networks.py b/plinth/modules/networks/networks.py index a94e0f17b..ce494ec57 100644 --- a/plinth/modules/networks/networks.py +++ b/plinth/modules/networks/networks.py @@ -39,11 +39,12 @@ def index(request): return TemplateResponse( request, 'connections_list.html', { + 'app_id': 'networks', 'title': _('Network Connections'), 'name': networks.name, 'description': networks.description, 'manual_page': networks.manual_page, - 'diagnostics_module_name': 'networks', + 'has_diagnostics': True, 'is_enabled': True, 'connections': connections }) diff --git a/plinth/modules/openvpn/views.py b/plinth/modules/openvpn/views.py index 7b5b989b4..65a0b7f18 100644 --- a/plinth/modules/openvpn/views.py +++ b/plinth/modules/openvpn/views.py @@ -58,6 +58,7 @@ def index(request): return TemplateResponse( request, 'openvpn.html', { + 'app_id': 'openvpn', 'clients': openvpn.clients, 'name': openvpn.name, 'description': openvpn.description, @@ -67,7 +68,7 @@ def index(request): 'form': form, 'show_status_block': True, 'is_running': status['is_running'], - 'diagnostics_module_name': 'openvpn', + 'has_diagnostics': True, 'is_enabled': status['enabled'], 'icon_filename': openvpn.icon_filename }) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index dfeeeebe9..f276c9c2d 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -122,7 +122,6 @@ def setup(helper, old_version=None): class PrivoxyAppView(AppView): app_id = 'privoxy' - diagnostics_module_name = 'privoxy' name = name description = description manual_page = manual_page diff --git a/plinth/modules/quassel/views.py b/plinth/modules/quassel/views.py index 211b7f9fd..e929fc88e 100644 --- a/plinth/modules/quassel/views.py +++ b/plinth/modules/quassel/views.py @@ -23,7 +23,6 @@ from .forms import QuasselForm class QuasselAppView(AppView): app_id = 'quassel' - diagnostics_module_name = 'quassel' name = quassel.name description = quassel.description clients = quassel.clients diff --git a/plinth/modules/radicale/views.py b/plinth/modules/radicale/views.py index 6e3c25e60..f638022d7 100644 --- a/plinth/modules/radicale/views.py +++ b/plinth/modules/radicale/views.py @@ -34,7 +34,6 @@ class RadicaleAppView(AppView): clients = radicale.clients name = radicale.name description = description - diagnostics_module_name = 'radicale' form_class = RadicaleForm app_id = 'radicale' manual_page = radicale.manual_page diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py index 96416cad4..83e44a89b 100644 --- a/plinth/modules/repro/__init__.py +++ b/plinth/modules/repro/__init__.py @@ -122,7 +122,6 @@ class ReproAppView(AppView): clients = clients name = name description = description - diagnostics_module_name = 'repro' app_id = 'repro' manual_page = manual_page port_forwarding_info = port_forwarding_info diff --git a/plinth/modules/roundcube/urls.py b/plinth/modules/roundcube/urls.py index 030d858a4..ba3bda5fc 100644 --- a/plinth/modules/roundcube/urls.py +++ b/plinth/modules/roundcube/urls.py @@ -27,7 +27,6 @@ urlpatterns = [ url( r'^apps/roundcube/$', AppView.as_view(app_id='roundcube', name=roundcube.name, - diagnostics_module_name='roundcube', description=roundcube.description, show_status_block=False, clients=roundcube.clients, manual_page=roundcube.manual_page, diff --git a/plinth/modules/samba/views.py b/plinth/modules/samba/views.py index 53c01678b..f3828d4ad 100644 --- a/plinth/modules/samba/views.py +++ b/plinth/modules/samba/views.py @@ -39,7 +39,6 @@ class SambaAppView(views.AppView): """Samba sharing basic configuration.""" name = samba.name description = samba.description - diagnostics_module_name = 'samba' app_id = 'samba' template_name = 'samba.html' icon_filename = samba.icon_filename diff --git a/plinth/modules/searx/views.py b/plinth/modules/searx/views.py index f90f2b2fc..2921ee2ac 100644 --- a/plinth/modules/searx/views.py +++ b/plinth/modules/searx/views.py @@ -33,7 +33,6 @@ class SearxAppView(views.AppView): clients = searx.clients name = searx.name description = searx.description - diagnostics_module_name = 'searx' app_id = 'searx' form_class = SearxForm show_status_block = False diff --git a/plinth/modules/shadowsocks/views.py b/plinth/modules/shadowsocks/views.py index 19c4633c7..e3590d60c 100644 --- a/plinth/modules/shadowsocks/views.py +++ b/plinth/modules/shadowsocks/views.py @@ -33,7 +33,6 @@ from .forms import ShadowsocksForm class ShadowsocksAppView(views.AppView): """Configuration view for Shadowsocks local socks5 proxy.""" app_id = 'shadowsocks' - diagnostics_module_name = 'shadowsocks' form_class = ShadowsocksForm name = shadowsocks.name description = shadowsocks.description diff --git a/plinth/modules/syncthing/urls.py b/plinth/modules/syncthing/urls.py index cc275b9e9..f02869180 100644 --- a/plinth/modules/syncthing/urls.py +++ b/plinth/modules/syncthing/urls.py @@ -27,7 +27,6 @@ urlpatterns = [ url( r'^apps/syncthing/$', AppView.as_view(app_id='syncthing', name=syncthing.name, - diagnostics_module_name='syncthing', description=syncthing.description, clients=syncthing.clients, manual_page=syncthing.manual_page, diff --git a/plinth/modules/tahoe/views.py b/plinth/modules/tahoe/views.py index c30bb3731..1d490f9fe 100644 --- a/plinth/modules/tahoe/views.py +++ b/plinth/modules/tahoe/views.py @@ -55,7 +55,6 @@ class TahoeAppView(AppView): template_name = 'tahoe-post-setup.html' name = tahoe.name description = tahoe.description - diagnostics_module_name = 'tahoe' port_forwarding_info = tahoe.port_forwarding_info icon_filename = tahoe.icon_filename diff --git a/plinth/modules/tor/views.py b/plinth/modules/tor/views.py index 5df283bbf..59751e5f0 100644 --- a/plinth/modules/tor/views.py +++ b/plinth/modules/tor/views.py @@ -52,6 +52,7 @@ def index(request): return TemplateResponse( request, 'tor.html', { + 'app_id': 'tor', 'name': tor.name, 'description': tor.description, 'clients': tor.clients, @@ -60,7 +61,7 @@ def index(request): 'config_running': bool(config_process), 'form': form, 'firewall': tor.app.get_components_of_type(Firewall), - 'diagnostics_module_name': 'tor', + 'has_diagnostics': True, 'is_enabled': status['enabled'], 'show_status_block': True, 'is_running': status['is_running'], diff --git a/plinth/modules/transmission/views.py b/plinth/modules/transmission/views.py index 0633f9f9e..ff768aa88 100644 --- a/plinth/modules/transmission/views.py +++ b/plinth/modules/transmission/views.py @@ -39,7 +39,6 @@ class TransmissionAppView(views.AppView): clients = transmission.clients name = transmission.name description = transmission.description - diagnostics_module_name = 'transmission' form_class = TransmissionForm app_id = 'transmission' manual_page = transmission.manual_page diff --git a/plinth/modules/ttrss/urls.py b/plinth/modules/ttrss/urls.py index d18e08e98..04f9f33a6 100644 --- a/plinth/modules/ttrss/urls.py +++ b/plinth/modules/ttrss/urls.py @@ -27,7 +27,6 @@ urlpatterns = [ url( r'^apps/ttrss/$', AppView.as_view(app_id='ttrss', name=ttrss.name, - diagnostics_module_name='ttrss', description=ttrss.description, clients=ttrss.clients, icon_filename=ttrss.icon_filename, manual_page=ttrss.manual_page, show_status_block=True), diff --git a/plinth/modules/users/views.py b/plinth/modules/users/views.py index f2696bb3c..7168a7bb3 100644 --- a/plinth/modules/users/views.py +++ b/plinth/modules/users/views.py @@ -76,7 +76,6 @@ class UserList(AppView, ContextMixin, django.views.generic.ListView): description = users.description app_id = 'users' show_status_block = False - diagnostics_module_name = 'users' manual_page = users.manual_page def get_context_data(self, *args, **kwargs): diff --git a/plinth/templates/toolbar.html b/plinth/templates/toolbar.html index cbd4947c9..79563c635 100644 --- a/plinth/templates/toolbar.html +++ b/plinth/templates/toolbar.html @@ -50,7 +50,7 @@ {% endwith %} {% endif %} - {% if diagnostics_module_name %} + {% if has_diagnostics %}
diff --git a/plinth/views.py b/plinth/views.py index 4cb7be766..7d6c0fafa 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -112,8 +112,6 @@ class LanguageSelectionView(FormView): class AppView(FormView): """A generic view for configuring simple apps.""" clients = [] - # Set diagnostics_module_name to the module name to show diagnostics button - diagnostics_module_name = "" name = None # List of paragraphs describing the service description = "" @@ -190,11 +188,12 @@ class AppView(FormView): context = super().get_context_data(*args, **kwargs) context.update(self._get_common_status()) context['app'] = self.app + context['app_id'] = self.app.app_id context['is_running'] = app_is_running(self.app) context['clients'] = self.clients - context['diagnostics_module_name'] = self.diagnostics_module_name context['name'] = self.name context['description'] = self.description + context['has_diagnostics'] = self.app.has_diagnostics() context['show_status_block'] = self.show_status_block context['manual_page'] = self.manual_page context['port_forwarding_info'] = self.port_forwarding_info From 1be1af9b184f295a96c8d686d7f76e322c8b0e08 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 27 Dec 2019 18:23:33 -0800 Subject: [PATCH 35/43] minidlna: Fix showing clients information Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/minidlna/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py index 43fde3b91..bf426939d 100644 --- a/plinth/modules/minidlna/views.py +++ b/plinth/modules/minidlna/views.py @@ -35,6 +35,7 @@ class MiniDLNAAppView(AppView): description = minidlna.description form_class = MiniDLNAServerForm icon_filename = minidlna.icon_filename + clients = minidlna.clients def get_initial(self): """Initial form value as found in the minidlna.conf""" From 89aefc00cf8fa85b317d9b81d0cbe33a0b034edc Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Fri, 27 Dec 2019 10:48:00 -0500 Subject: [PATCH 36/43] security: List whether each app is sandboxed Signed-off-by: James Valleroy [sunil: i18n for yes, no, N/A strings, avoid changing an i18ned string] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/security/__init__.py | 62 ++++++++++++++++--- .../security/templates/security_report.html | 21 +++++-- plinth/modules/security/views.py | 11 ++-- 3 files changed, 74 insertions(+), 20 deletions(-) diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 663751a17..14a5b8afd 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -113,8 +113,8 @@ def set_restricted_access(enabled): actions.superuser_run('security', [action]) -def get_vulnerability_counts(): - """Return number of security vulnerabilities for each app""" +def get_apps_report(): + """Return a security report for each app""" lines = subprocess.check_output(['debsecan']).decode().split('\n') cves = defaultdict(set) for line in lines: @@ -132,12 +132,12 @@ def get_vulnerability_counts(): 'freedombox': { 'name': 'freedombox', 'packages': {'freedombox'}, - 'count': 0, - 'past_count': 0 if past_cves else None, + 'vulns': 0, + 'past_vulns': 0 if past_cves else None, } } if past_cves and 'freedombox' in past_cves: - apps['freedombox']['past_count'] = len(past_cves['freedombox']) + apps['freedombox']['past_vulns'] = len(past_cves['freedombox']) for module_name, module in module_loader.loaded_modules.items(): try: @@ -145,6 +145,11 @@ def get_vulnerability_counts(): except AttributeError: continue # app has no managed packages + try: + services = module.managed_services + except AttributeError: + services = None + # filter out apps not setup yet if module.setup_helper.get_state() == 'needs-setup': continue @@ -152,17 +157,56 @@ def get_vulnerability_counts(): apps[module_name] = { 'name': module_name, 'packages': set(packages), - 'count': 0, - 'past_count': 0 if past_cves else None, + 'vulns': 0, + 'past_vulns': 0 if past_cves else None, + 'sandboxed': None, } for package in packages: if past_cves and package in past_cves: - apps[module_name]['past_count'] += len(past_cves[package]) + apps[module_name]['past_vulns'] += len(past_cves[package]) + + if services: + apps[module_name]['sandboxed'] = False + for service in services: + if _get_service_is_sandboxed(service): + apps[module_name]['sandboxed'] = True for cve_packages in cves.values(): for app_ in apps.values(): if cve_packages & app_['packages']: - app_['count'] += 1 + app_['vulns'] += 1 return apps + + +def _get_service_is_sandboxed(service): + """Return whether service is sandboxed.""" + lines = subprocess.check_output([ + 'systemctl', + 'show', + service, + '--property=ProtectSystem', + '--property=ProtectHome', + '--property=PrivateTmp', + '--property=PrivateDevices', + '--property=PrivateNetwork', + '--property=PrivateUsers', + '--property=PrivateMounts', + ]).decode().strip().split('\n') + pairs = [line.partition('=')[::2] for line in lines] + properties = {name: value for name, value in pairs} + if properties['ProtectSystem'] in ['yes', 'full', 'strict']: + return True + + if properties['ProtectHome'] in ['yes', 'read-only', 'tmpfs']: + return True + + for name in [ + 'PrivateTmp', 'PrivateDevices', 'PrivateNetwork', 'PrivateUsers', + 'PrivateMounts' + ]: + if properties[name] == 'yes': + return True + + return False diff --git a/plinth/modules/security/templates/security_report.html b/plinth/modules/security/templates/security_report.html index 19bbd001c..a1696b3d9 100644 --- a/plinth/modules/security/templates/security_report.html +++ b/plinth/modules/security/templates/security_report.html @@ -24,7 +24,7 @@ {% block content %}

{% trans "Security Report" %}

- {% blocktrans trimmed with count=freedombox_vulns.count %} + {% blocktrans trimmed with count=freedombox_report.vulns %} The installed version of FreedomBox has {{ count }} reported security vulnerabilities. {% endblocktrans %} @@ -32,7 +32,8 @@

{% blocktrans trimmed %} The following table lists the current reported number, and historical - count, of security vulnerabilities for each installed app. + count, of security vulnerabilities for each installed app. It also lists + whether each service is using sandboxing features. {% endblocktrans %}

{{ share.name }}
+ action="{% url 'samba:share' share.mount_point|urlencode:'' %}"> {% csrf_token %} - +
@@ -41,14 +42,24 @@ + - {% for app in apps_vulns %} + {% for app in apps_report %} - - + + + {% endfor %} diff --git a/plinth/modules/security/views.py b/plinth/modules/security/views.py index 9e44d786c..d64eafde5 100644 --- a/plinth/modules/security/views.py +++ b/plinth/modules/security/views.py @@ -80,14 +80,13 @@ def _apply_changes(request, old_status, new_status): def report(request): """Serve the security report page""" - vulnerability_counts = security.get_vulnerability_counts() + apps_report = security.get_apps_report() return TemplateResponse( request, 'security_report.html', { 'title': _('Security Report'), - 'freedombox_vulns': - vulnerability_counts.pop('freedombox'), - 'apps_vulns': - sorted(vulnerability_counts.values(), - key=lambda app: app['name']), + 'freedombox_report': + apps_report.pop('freedombox'), + 'apps_report': + sorted(apps_report.values(), key=lambda app: app['name']), }) From 8a4fd1def4476836fd50561da125e7686fa57ff9 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 30 Dec 2019 14:44:15 -0800 Subject: [PATCH 37/43] mediawiki: Fix problem with session cache failing logins Set the session cache to use database. This will also have the added benefit of sessions persisting across reboots (and PHP session cleanups). See bug report on why this is needed. https://salsa.debian.org/freedombox-team/plinth/issues/1736 We are unfortunately modifying the MediaWiki settings that file that we are shipping when preferences are modified in the FreedomBox UI. This means that if a newer version of this settings file is shipped, then FreedomBox package will show configuration file prompts. To solve this, introduce a new static settings file that will have lower priority than the file modified by FreedomBox UI. Closes: #1736. Tests: - Test that running FreedomBox daemon with changes runs the MediaWiki app's setup and introduces the new line into LocalSettings.php - That LocalSettings.php will be populated with lines to include FreedomBoxStaticSettings.php and FreedomBoxSettings.php in that order when 'actions/mediawiki setup' is run. This should work when no lines are present, one of the lines is already present and both the lines are already present. - Test that running './setup.py install' installs FreedomBoxStaticSettings.php. - Test that MediaWiki runs without FreedomBoxStaticSettings.php - Test that private wiki and public registrations settings work with the new changes. - Run functional tests for MediaWiki app with the changes. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/mediawiki | 32 ++++++++++++---- plinth/modules/mediawiki/__init__.py | 2 +- .../mediawiki/FreedomBoxStaticSettings.php | 37 +++++++++++++++++++ 3 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 plinth/modules/mediawiki/data/etc/mediawiki/FreedomBoxStaticSettings.php diff --git a/actions/mediawiki b/actions/mediawiki index c12a5eaa9..eada16fb4 100755 --- a/actions/mediawiki +++ b/actions/mediawiki @@ -25,7 +25,7 @@ import subprocess import sys import tempfile -from plinth.utils import generate_password, grep +from plinth.utils import generate_password MAINTENANCE_SCRIPTS_DIR = "/usr/share/mediawiki/maintenance" CONF_FILE = '/etc/mediawiki/FreedomBoxSettings.php' @@ -87,12 +87,30 @@ def subcommand_setup(_): def include_custom_config(): - """Include FreedomBox specific configuration in LocalSettings.php - """ - if not grep(r'FreedomBoxSettings', LOCAL_SETTINGS_CONF): - with open(LOCAL_SETTINGS_CONF, 'a') as conf_file: - conf_file.write( - 'include dirname(__FILE__)."/FreedomBoxSettings.php";\n') + """Include FreedomBox specific configuration in LocalSettings.php.""" + with open(LOCAL_SETTINGS_CONF, 'r') as conf_file: + lines = conf_file.readlines() + + static_settings_index = None + settings_index = None + for line_number, line in enumerate(lines): + if 'FreedomBoxSettings.php' in line: + settings_index = line_number + + if 'FreedomBoxStaticSettings.php' in line: + static_settings_index = line_number + + if settings_index is None: + settings_index = len(lines) + lines.append('include dirname(__FILE__)."/FreedomBoxSettings.php";\n') + + if static_settings_index is None: + lines.insert( + settings_index, + 'include dirname(__FILE__)."/FreedomBoxStaticSettings.php";\n') + + with open(LOCAL_SETTINGS_CONF, 'w') as conf_file: + conf_file.writelines(lines) def subcommand_change_password(arguments): diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index 00a2bda31..66320d118 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -29,7 +29,7 @@ from plinth.modules.firewall.components import Firewall from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 6 +version = 7 managed_packages = ['mediawiki', 'imagemagick', 'php-sqlite3'] diff --git a/plinth/modules/mediawiki/data/etc/mediawiki/FreedomBoxStaticSettings.php b/plinth/modules/mediawiki/data/etc/mediawiki/FreedomBoxStaticSettings.php new file mode 100644 index 000000000..4b77aa163 --- /dev/null +++ b/plinth/modules/mediawiki/data/etc/mediawiki/FreedomBoxStaticSettings.php @@ -0,0 +1,37 @@ + Date: Sun, 29 Dec 2019 11:57:25 +0000 Subject: [PATCH 38/43] Translated using Weblate (German) Currently translated at 96.4% (1100 of 1141 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 55cf6bb38..be73a0435 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-12-22 20:21+0000\n" -"Last-Translator: Michael Breidenbach \n" +"PO-Revision-Date: 2019-12-31 01:40+0000\n" +"Last-Translator: Ralf Barkow \n" "Language-Team: German \n" "Language: de\n" @@ -1145,13 +1145,13 @@ msgid "" "Internet asks for your DNS name, they will get a response with your current " "IP address." msgstr "" -"Die Lösung ist, einen DNS-Namen mit der IP-Adresse zu verknüpfen und diesen " -"DNS-Eintrag jedes mal zu aktualisieren, wenn sich die IP-Adresse ändert. " -"Dynamisches DNS erlaubt die aktuelle IP-Adresse zu einem GnuDIP-Server zu übertragen. " -"Anschließend wird der Server die aktuelle IP-Adresse mit dem DNS-Namen " -"verknüpfen, und wenn jemand aus dem Internet Ihren DNS-Namen abfragt, wird " -"als Antwort Ihre aktuelle IP-Adresse geliefert." +"Die Lösung besteht darin, Ihrer IP-Adresse einen DNS-Namen zuzuweisen und " +"den DNS-Namen jedes Mal zu aktualisieren, wenn Ihre IP von Ihrem Internet-" +"Provider geändert wird. Dynamisches DNS überträgt die aktuelle öffentliche " +"IP-Adresse zu einem GnuDIP-Server. Danach wird der Server Ihren DNS-Namen " +"der neuen IP zuweisen, und wenn jemand aus dem Internet nach Ihrem DNS-Namen " +"fragt, erhält er eine Antwort mit Ihrer aktuellen IP-Adresse." #: plinth/modules/dynamicdns/__init__.py:78 msgid "Dynamic Domain Name" From 5919c06fe8852147a344d47eb922931c3f84ef82 Mon Sep 17 00:00:00 2001 From: erlendnagel Date: Mon, 30 Dec 2019 09:04:47 +0000 Subject: [PATCH 39/43] Translated using Weblate (Dutch) Currently translated at 85.3% (973 of 1141 strings) --- plinth/locale/nl/LC_MESSAGES/django.po | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 4bbf8eb33..0554d697b 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-16 17:58-0500\n" -"PO-Revision-Date: 2019-10-15 22:52+0000\n" -"Last-Translator: ikmaak \n" +"PO-Revision-Date: 2019-12-31 01:40+0000\n" +"Last-Translator: erlendnagel \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -17,13 +17,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9\n" +"X-Generator: Weblate 3.10\n" "X-Language: nl_NL\n" "X-Source-Language: C\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" -msgstr "" +msgstr "Paginabron" #: plinth/action_utils.py:298 #, python-brace-format @@ -297,7 +297,7 @@ msgstr "" #: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." -msgstr "" +msgstr "Bestaande repository is niet versleuteld." #: plinth/modules/backups/repository.py:337 #, python-brace-format @@ -387,7 +387,7 @@ msgstr "Invoeren" #: plinth/modules/backups/templates/backups_repository_remove.html:28 msgid "Are you sure that you want to remove this repository?" -msgstr "" +msgstr "Weet u zeker dat u deze repository wilt verwijderen?" #: plinth/modules/backups/templates/backups_repository_remove.html:34 msgid "" @@ -398,6 +398,11 @@ msgid "" " can add it again later on.\n" " " msgstr "" +"\n" +" De repository op afstand zal niet worden verwijdert.\n" +"Dit verwijdert enkel de repository uit de lijst op uw backup pagina.\n" +"U kunt de repository later terug toevoegen.\n" +" " #: plinth/modules/backups/templates/backups_repository_remove.html:46 msgid "Remove Location" @@ -439,6 +444,8 @@ msgid "" "You have %(max_filesize)s available to restore a backup. Exceeding this " "limit can leave your %(box_name)s unusable." msgstr "" +"U heeft nog %(max_filesize)s beschikbaar om een backup terug te zetten. Als " +"u deze limiet overschrijdt kan uw %(box_name)s onbruikbaar worden." #: plinth/modules/backups/templates/backups_upload.html:56 msgid "Upload file" From 82ada81f1974b5f58ad1b05ea7b415849df52fbf Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 30 Dec 2019 20:44:24 -0500 Subject: [PATCH 40/43] locale: Update translation strings Signed-off-by: James Valleroy --- plinth/locale/bg/LC_MESSAGES/django.po | 576 +++++++++-------- plinth/locale/bn/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/cs/LC_MESSAGES/django.po | 617 +++++++++++-------- plinth/locale/da/LC_MESSAGES/django.po | 606 ++++++++++-------- plinth/locale/de/LC_MESSAGES/django.po | 621 +++++++++++-------- plinth/locale/django.pot | 572 +++++++++-------- plinth/locale/el/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/es/LC_MESSAGES/django.po | 640 +++++++++++-------- plinth/locale/fa/LC_MESSAGES/django.po | 630 +++++++++++-------- plinth/locale/fake/LC_MESSAGES/django.po | 606 ++++++++++-------- plinth/locale/fr/LC_MESSAGES/django.po | 644 +++++++++++-------- plinth/locale/gl/LC_MESSAGES/django.po | 576 +++++++++-------- plinth/locale/gu/LC_MESSAGES/django.po | 582 ++++++++++-------- plinth/locale/hi/LC_MESSAGES/django.po | 608 ++++++++++-------- plinth/locale/hu/LC_MESSAGES/django.po | 623 +++++++++++-------- plinth/locale/id/LC_MESSAGES/django.po | 601 ++++++++++-------- plinth/locale/it/LC_MESSAGES/django.po | 601 ++++++++++-------- plinth/locale/ja/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/kn/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/lt/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/nb/LC_MESSAGES/django.po | 617 +++++++++++-------- plinth/locale/nl/LC_MESSAGES/django.po | 617 +++++++++++-------- plinth/locale/pl/LC_MESSAGES/django.po | 594 ++++++++++-------- plinth/locale/pt/LC_MESSAGES/django.po | 577 +++++++++-------- plinth/locale/ru/LC_MESSAGES/django.po | 608 ++++++++++-------- plinth/locale/sl/LC_MESSAGES/django.po | 576 +++++++++-------- plinth/locale/sv/LC_MESSAGES/django.po | 646 ++++++++++++-------- plinth/locale/ta/LC_MESSAGES/django.po | 572 +++++++++-------- plinth/locale/te/LC_MESSAGES/django.po | 608 ++++++++++-------- plinth/locale/tr/LC_MESSAGES/django.po | 606 ++++++++++-------- plinth/locale/uk/LC_MESSAGES/django.po | 586 ++++++++++-------- plinth/locale/zh_Hans/LC_MESSAGES/django.po | 610 ++++++++++-------- 32 files changed, 11388 insertions(+), 7792 deletions(-) diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index ec1214357..e6a1132ca 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-10-12 14:52+0000\n" "Last-Translator: Nevena Mircheva \n" "Language-Team: Bulgarian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1544,75 +1560,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1833,7 +1849,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1878,28 +1894,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1936,7 +1952,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1984,32 +1999,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2068,15 +2083,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2086,7 +2101,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2144,6 +2159,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2162,36 +2178,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2279,11 +2295,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2349,36 +2365,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2433,27 +2449,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2464,7 +2480,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2500,7 +2516,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2695,21 +2711,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2734,7 +2750,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2775,7 +2791,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3001,94 +3017,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3135,7 +3151,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3410,11 +3425,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3721,22 +3736,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3746,7 +3761,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3872,7 +3887,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3989,114 +4004,158 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" -msgid "Error enabling share: {error_message}" -msgstr "Грешка при инсталиране на приложението: {error}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" +msgid "Error enabling share: {error_message}" +msgstr "Грешка при инсталиране на приложението: {error}" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, fuzzy, python-brace-format +#| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Грешка при инсталиране на приложението: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4128,8 +4187,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4175,21 +4234,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4544,7 +4620,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4749,10 +4825,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4760,6 +4836,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4856,7 +4940,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4864,7 +4948,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4907,11 +4991,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4920,36 +5004,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5193,18 +5277,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5212,24 +5296,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5238,59 +5322,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5311,7 +5399,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5372,29 +5460,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5711,11 +5799,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index 092648b64..4ce436d59 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,40 +22,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -107,6 +102,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -337,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -583,8 +588,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -757,7 +762,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -798,19 +803,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -824,7 +829,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -842,12 +847,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -889,7 +894,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -908,21 +913,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -985,18 +986,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1190,7 +1191,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1307,11 +1308,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1327,6 +1328,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1418,15 +1434,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1437,13 +1453,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1537,75 +1553,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1826,7 +1842,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1871,28 +1887,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1929,7 +1945,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1977,32 +1992,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2061,15 +2076,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2079,7 +2094,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2137,6 +2152,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2155,36 +2171,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2272,11 +2288,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2342,36 +2358,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2426,27 +2442,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2457,7 +2473,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2493,7 +2509,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2688,21 +2704,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2727,7 +2743,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2768,7 +2784,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2994,94 +3010,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3128,7 +3144,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3403,11 +3418,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3714,22 +3729,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3739,7 +3754,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3865,7 +3880,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3982,112 +3997,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4119,8 +4178,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4166,21 +4225,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4535,7 +4611,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4740,10 +4816,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4751,6 +4827,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4847,7 +4931,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4855,7 +4939,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4898,11 +4982,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4911,36 +4995,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5184,18 +5268,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5203,24 +5287,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5229,59 +5313,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5302,7 +5390,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5363,29 +5451,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5702,11 +5790,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 2da9af457..015a4f3c9 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-10-26 17:53+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Služba %(service_name)s je spuštěná." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Spojení očekáváno na {kind} portu {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Spojení očekáváno na {kind} portu {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Přístup na URL adrese {url} na tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Přístup na URL adrese {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Připojit k {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Nedaří se připojit k {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Zapnout aplikaci" @@ -110,6 +106,16 @@ msgstr "Webový server" msgid "{box_name} Web Interface (Plinth)" msgstr "Webové rozhraní {box_name} (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Přístup na URL adrese {url} na tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Přístup na URL adrese {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Zjišťování služby" @@ -358,7 +364,7 @@ msgid "Create Location" msgstr "Vytvořit umístění" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Vytvořit repozitář" @@ -634,8 +640,8 @@ msgstr "Zapnout DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Zapnout zabezpečovací rozšíření systému doménových názvů" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Nastavení aktualizováno" @@ -838,7 +844,7 @@ msgstr "Jsou skryté pokročilé aplikace a funkce" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Sdílení souborů" @@ -895,19 +901,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Heslo pro nahrávání aktualizováno" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Heslo pro nahrávání se nepodařilo aktualizovat" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Nastavení nejvyšší umožněné velikosti souboru aktualizováno" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" "Nastavení nejvyšší umožněné velikosti nahrávaného souboru se nepodařilo " @@ -925,7 +931,7 @@ msgstr "" "Server síťového času je program který udržuje systémový čas synchronní se " "servery na Internetu." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Čas synchronizován s NTP serverem" @@ -945,12 +951,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- není nastavena časová zóna --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Chyba při nastavování časové zóny: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Nastavení časové zóny" @@ -1004,7 +1010,7 @@ msgstr "" "Diagnostický test systému spustí několik kontrol pro potvrzení, že aplikace " "a služby fungují tak, jak mají." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Diagnostické testy" @@ -1023,21 +1029,19 @@ msgid "Results" msgstr "Výsledky" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Modul: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Výsledky diagnostiky" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Modul: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Tento modul nepodporuje diagnostiku" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1110,18 +1114,18 @@ msgstr "" msgid "Update setup" msgstr "Aktualizovat nastavení" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Nastavení se nezměnila" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Registrace uživatelů zapnuta" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Registrace uživatelů vypnuta" @@ -1363,7 +1367,7 @@ msgstr "" msgid "Last update" msgstr "Minulá aktualizace" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "O systému" @@ -1500,11 +1504,11 @@ msgstr "" msgid "Configuration" msgstr "Nastavení" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Správa archivu zpráv zapnuta" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Správa archivu zpráv vypnuta" @@ -1523,6 +1527,25 @@ msgstr "" "provoz na vašem {box_name}. Zapnutá a správně nastavená brána firewall " "snižuje riziko bezpečnostních hrozeb z Internetu." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"Služba %(service_name)s je k dispozici pouze na vnitřních sítích." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"Služba %(service_name)s je k dispozici pouze na vnitřních sítích." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1629,15 +1652,15 @@ msgstr "Spustit nastavení" msgid "Setup Complete" msgstr "Nastavení dokončeno" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Jednoduché hostování Git" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1655,7 +1678,7 @@ msgstr "" "grafických klientů. A svoje zdrojové kódy můžete sdílet s lidmi z celého " "světa." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1663,7 +1686,7 @@ msgstr "" "Více o Git se dozvíte navštívením výuky Gitu." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "Přístup do Git repozitářů pro čtení a zápis" @@ -1764,77 +1787,77 @@ msgstr "Nevratně smazat tento repozitář?" msgid "Delete %(name)s" msgstr "Smazat %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Repozitář vytvořen." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Při nastavování se vyskytla chyba." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Repozitář upraven." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Při nastavování se vyskytla chyba." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} smazáno." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentace" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Příručka" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Získat podporu" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Odeslat zpětnou vazbu" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Zapojit se" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentace a často kladené dotazy" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Příručka k {box_name}" @@ -2112,7 +2135,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonymní síť" @@ -2164,11 +2187,11 @@ msgstr "Proxy servery" msgid "Anonymous torrents" msgstr "Anonymní torenty" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P proxy a tunely" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2178,7 +2201,7 @@ msgstr "" "je třeba, aby vámi používaný webový prohlížeč (nejlépe Tor Browser) byl " "nastaven pro proxy." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2186,11 +2209,11 @@ msgstr "" "Ve výchozím stavu jsou k dispozici proxy pro HTTP, HTTPS a IRC. Další proxy " "a tunely je možné nastavit pomocí rozhraní pro nastavení tunelů." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonymní torrenty" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2245,7 +2268,6 @@ msgstr "Zobrazit a upravit wiki aplikace" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2295,32 +2317,32 @@ msgstr "" "Tato akce odebere veškeré příspěvky, stránky a komentáře včetně historie " "verzí. Opravdu chcete nenávratně smazat tuto wiki/blog?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} vytvořena." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Wiki se nepodařilo vytvořit: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} vytvořen." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog se nepodařilo vytvořit: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "{title} dsmazáno." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "{title} se nepodařilo smazat: {error}" @@ -2387,15 +2409,15 @@ msgstr "" msgid "JavaScript license information" msgstr "Licenční informace o JavaScriptu" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certifikáty" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2410,7 +2432,7 @@ msgstr "" "dokázáním, že je vlastníkem domény vůči Let's Encrypt, certifikační autoritě " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2472,6 +2494,7 @@ msgstr "Získat znovu" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Smazat" @@ -2492,7 +2515,7 @@ msgstr "" "Nejsou nastavené žádné domény. Nastavte je, " "aby bylo možné pro ně získat certifikát." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2501,29 +2524,29 @@ msgstr "" "Platnost certifikátu pro doménu {domain} úspěšně odvolána. Může to chvíli " "trvat, než se změna projeví." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Nepodařilo se odvolat platnost certifikátu prodoménu {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Úspěšně obdržen certifikát pro doménu {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Nepodařilo se získat certifikát pro doménu {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikát pro doménu {domain} úspěšně smazán" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" @@ -2648,11 +2671,11 @@ msgstr "" " Encrypt a získejte takový.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Registrace pro veřejnost otevřena" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Registrace pro veřejnost zavřena" @@ -2735,36 +2758,36 @@ msgstr "" "Když je zapnuto, přístup bude omezen. Pouze lidé kteří zde mají uživatelské " "účty mohou číst/psát do wiki. Registrace veřejnosti jsou také vypnuté." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Heslo aktualizováno" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Registrace pro veřejnost otevřené" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Registrace pro veřejnost zavřené" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Soukromý režim zapnut" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Soukromý režim vypnut" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2827,27 +2850,27 @@ msgstr "Adresa" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Nastavení nejvyššího umožněného počtu hráčů aktualizováno" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Nastavení tvořivého režimu aktualizována" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Nastavení PVP aktualizováno" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Nastavení poškozování aktualizováno" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2858,7 +2881,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2894,7 +2917,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3115,15 +3138,15 @@ msgstr "Klíč zveřejněn na server s klíči." msgid "Error occurred while publishing key." msgstr "Při zveřejňování klíče došlo k chybě." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Hlasový chat" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3131,7 +3154,7 @@ msgstr "" "Mumble je open source software pro šifrovanou, vysoce kvalitní hlasovou " "komunikaci s nízkou prodlevou." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3161,7 +3184,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3216,7 +3239,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "S použitím DNSSEC na IPv{kind}" @@ -3467,96 +3490,96 @@ msgstr "WPA" msgid "Open" msgstr "Otevřené" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Síťová připojení" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Připojení nelze zobrazit: Připojení neexistuje." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Informace o spojení" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Připojení nelze upravit: Připojení neexistuje." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Tento typ připojení ještě není podporován." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Upravit připojení" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Připojení {name} aktivováno." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Aktivace připojení se nezdařila: Připojení nenalezeno." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Nepodařilo se aktivovat připojení {name}: Není k dispozici žádné použitelné " "zařízení." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Připojení {name} deaktivováno." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Deaktivace připojení se nezdařila: Připojení nenalezeno." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi sítě poblíž" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Přidat připojení" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Přidávání nového generického připojení" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Přidávání nového ethernetového připojení" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Přidávání nového PPPoE připojení" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Přidávání nového Wi-Fi připojení" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Připojení {name} smazáno." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Smazat připojení" @@ -3603,7 +3626,6 @@ msgid "yes" msgstr "ano" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Zařízení" @@ -3914,11 +3936,11 @@ msgstr "" msgid "Download my profile" msgstr "Stáhnout si svůj profil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Nastavování dokončeno." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Nastavování se nezdařilo." @@ -4275,15 +4297,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Vypnout nyní" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Webová proxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4293,7 +4315,7 @@ msgstr "" "zlepšujícími soukromí, upravující data webových stánek a HTTP hlaviček, " "řídící přístup a odebírající reklamy a ostatní otravné Internetové smetí. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4308,7 +4330,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ nebo http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" @@ -4467,7 +4489,7 @@ msgstr "" "uživatelské jméno. Kliknutí na tlačítko hledat vypíše existující kalendáře a " "adresáře kontaktů." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" @@ -4642,112 +4664,166 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Vybrat datové úložiště nebo oddíl" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Štítek" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Sdílené" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Doménový název" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Přípojný bod" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Použito" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Domény k dispozici" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Sdílení přidáno." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Akce" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Přidat sdílení" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Přidat sdílení" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Domovská stránka" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Sdílení smazáno." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Sdílení upraveno." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Vyhledávání na webu" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4755,7 +4831,7 @@ msgstr "" "Searx je soukromí respektující metavyhledavač na Internetu. Slučuje a " "zobrazuje výsledky z vícero vyhledávačů." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4763,7 +4839,7 @@ msgstr "" "Použitím Searx je možné se vyhnout sledování a profilování vyhledávači. Ve " "výchozím stavu neukládá žádné cookie." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Hledat na webu" @@ -4796,8 +4872,8 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Umožnit, aby tato aplikace byla používána kýmkoli, kdo se k ní může dostat." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Nastavení aktualizována." @@ -4850,21 +4926,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Název aplikace" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "Stávající zranitelnosti zabezpečení" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Minulé zranitelnosti zabezpečení" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Pískoviště s kostkami" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "ano" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Žádný" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5277,7 +5376,7 @@ msgstr "Zachycený stav pořízen." msgid "Storage snapshots configuration updated" msgstr "Nastavení zachycování stavů úložiště aktualizováno" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Chyba akce: {0} [{1}] [{2}]" @@ -5502,11 +5601,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Public share" -msgid "Samba share" -msgstr "Veřejné sdílení" +#| msgid "Shared" +msgid "Share" +msgstr "Sdílené" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5514,6 +5613,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Jsou používána následující úložná zařízení:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Štítek" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Přípojný bod" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Zvětšení oddílu" @@ -5627,7 +5734,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Distribuované souborové úložiště" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5639,7 +5746,7 @@ msgstr "" "poskytovateli nezávislé zabezpečení. I když některé z uzlů přestanou " "fungovat, své soubory můžete získat ze zbývajících uzlů." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5688,11 +5795,11 @@ msgstr "Připojené uvaděče" msgid "Remove" msgstr "Odebrat" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5706,38 +5813,38 @@ msgstr "" "prohlížeč Tor Browser." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor skrytá služba" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Přistoupit k URL adrese {url} na tcp{kind} prostřednictvím Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" @@ -6038,18 +6145,18 @@ msgstr "Proces přechodu na novější verze zahájen." msgid "Starting upgrade failed." msgstr "Spouštění přechodu na novější verzi se nezdařilo." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Uživatelé a skupiny" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6057,25 +6164,25 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Přístup ke všem službám a nastavení systému" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" "Toto uživatelské jméno je už používáno někým jiným nebo vyhrazeno pro systém." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Oprávnění" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6089,20 +6196,20 @@ msgstr "" "skupině správců (admin) se budou moci přihlásit všude. Mohou se k systému " "přihlásit také prostřednictvím SSH a mají práva správy (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Vytvoření LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Přidání nového uživatele do skupiny {group} se nezdařilo." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Pověřené SSH klíče" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6112,39 +6219,45 @@ msgstr "" "systému i bez zadávání hesla. Klíčů je možné vložit vícero, každý na vlastní " "řádek. Prázdné řádky a ty, které začínají na znak # budou ignorovány." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Přejmenování LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Odebrání uživatele ze skupiny se nezdařilo." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Nepodařilo se vložit SSH klíče." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Přidání uživatele do skupiny se nezdařilo." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Není možné smazat účet jediného zbývajícího správce systému." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Změna hesla LDAP uživatele se nezdařila." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Přidání nového uživatele do skupiny správců (admin) se nezdařilo." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Omezení přístupu ke konzoli se nezdařilo." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni" @@ -6165,7 +6278,7 @@ msgid "Create User" msgstr "Vytvořit uživatele" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Smazat uživatele" @@ -6231,29 +6344,29 @@ msgstr "Uložit změny" msgid "User %(username)s created." msgstr "Uživatel %(username)s vytvořen." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Uživatel %(username)s aktualizován." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Upravit uživatele" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Uživatel {user} smazán." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Smazání LDAP uživatele se nezdařilo." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Změnit heslo" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." @@ -6598,11 +6711,11 @@ msgstr "Spustit webového klienta" msgid "Client Apps" msgstr "Klientské aplikace" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Aplikace zapnuta" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Aplikace vypnuta" @@ -6610,6 +6723,22 @@ msgstr "Aplikace vypnuta" msgid "Gujarati" msgstr "gudžarátština" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Vybrat datové úložiště nebo oddíl" + +#, fuzzy +#~| msgid "Public share" +#~ msgid "Samba share" +#~ msgstr "Veřejné sdílení" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 4349368d3..e7d10f4f4 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2016-07-03 21:44+0000\n" "Last-Translator: Mikkel Kirkgaard Nielsen \n" "Language-Team: Danish Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1781,83 +1802,83 @@ msgstr "Slet bruger permanent?" msgid "Delete %(name)s" msgstr "Slet %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Der opstod en fejl under konfigurationen." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Der opstod en fejl under konfigurationen." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} slettet." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Brugermanual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentation og OSS" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Brugervejledning" @@ -2126,7 +2147,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" @@ -2183,28 +2204,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2257,7 +2278,6 @@ msgstr "Tjenester og Applikationer" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2307,33 +2327,33 @@ msgstr "" "Denne handling fjerner alle artikler, sider og kommentater inklusiv al " "historik. Slet denne wiki eller blog permanent?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} oprettet." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunne ikke oprette wiki: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} oprettet." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunne ikke oprette blog: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} slettet." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2397,19 +2417,19 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "Certifikater (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "Certifikat Status" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -2430,7 +2450,7 @@ msgstr "" "Dette gøres ved at bekræfte overfor Let's Encrypt, en certifikat-autoritet " "(CA), at den har ejerskab over domænet." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -2508,6 +2528,7 @@ msgstr "Generhverv" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Slet" @@ -2526,7 +2547,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2534,31 +2555,31 @@ msgid "" "moments to take effect." msgstr "Certifikatet for domænet {domain} blev trukket tilbage" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certifikatet for domænet {domain} blev erhvervet" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" "Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikatet for domænet {domain} blev trukket tilbage" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2658,13 +2679,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "Applikation aktiveret" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2738,48 +2759,48 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Kodeord" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "Applikation aktiveret" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "Applikation deaktiveret" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite aktiveret" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" msgstr "PageKite deaktiveret" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" msgstr "Block Testområde (Minetest)" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2844,37 +2865,37 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Mumble Tale-tjenesteserver" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2885,7 +2906,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2921,7 +2942,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3143,17 +3164,17 @@ msgstr "Nøgle distribueret til nøgleserver." msgid "Error occurred while publishing key." msgstr "Fejl under distribuering af nøgle." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Tale-tjeneste (Mumble)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3161,7 +3182,7 @@ msgstr "" "Mumble er open source software der tilbyder en højkvalitets tale-tjeneste " "med lav forsinkelse og kryptering." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3191,7 +3212,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3234,7 +3255,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruger DNSSEC på IPv{kind}" @@ -3509,97 +3530,97 @@ msgstr "" msgid "Open" msgstr "OpenVPN" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netværksforbindelser" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Kan ikke vise forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Forbindelsesinformation" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Kan ikke redigere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Denne type forbindelse kan ikke konfigureres herfra endnu." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Rediger Forbindelse" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverede forbindelse {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Kunne ikke aktivere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Kunne ikke aktivere forbindelse {name}: Ingen passende enhed er tilgængelig." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Deaktiverede forbindelse {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Kan ikke deaktivere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-netværk i Nærheden" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Tilføj forbindelse" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 #, fuzzy #| msgid "Adding New Ethernet Connection" msgid "Adding New Generic Connection" msgstr "Tilføjer Ny Ethernet Forbindelse" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Tilføjer Ny Ethernet Forbindelse" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Tilføjer Ny PPPoE Forbindelse" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Tilføjer Ny Wi-Fi Forbindelse" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Slettede forbindelse {name}." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Slet Forbindelse" @@ -3646,7 +3667,6 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhed" @@ -3965,11 +3985,11 @@ msgstr "" msgid "Download my profile" msgstr "Hent min profil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Opsætning færdig." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Opsætning fejlede." @@ -4334,19 +4354,19 @@ msgstr "" msgid "Shut Down Now" msgstr "Sluk Nu" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "Aktiver Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy Webproxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4357,7 +4377,7 @@ msgstr "" "HTTP-headers, styre adgang og fjerne reklamer og andet vedderstyggeligt " "internetskrald. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4372,7 +4392,7 @@ msgstr "" "på http://config.privoxy.org/ " "eller http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" @@ -4525,7 +4545,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4707,124 +4727,180 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Add Service" +msgid "Shares" +msgstr "Tilføj Service" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domænenavn" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Monteringspunkt" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Brugt" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Tilgængelige Domæner" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Kite name" msgid "Share name" msgstr "Kite-navn" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "Tilføj Service" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "Tilføj Service" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Add Service" +msgid "Home Share" +msgstr "Tilføj Service" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Webserver" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4860,8 +4936,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Konfiguration opdateret." @@ -4911,23 +4987,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Navn" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox (Minetest)" +msgid "Sandboxed" +msgstr "Block Testområde (Minetest)" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "ja" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" @@ -5339,7 +5436,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Fejl under handling: {0} [{1}] [{2}]" @@ -5574,11 +5671,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "Distribuer Nøgle" +#| msgid "Add Service" +msgid "Share" +msgstr "Tilføj Service" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5588,6 +5685,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Følgende diske er i brug:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Monteringspunkt" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5692,7 +5797,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5700,7 +5805,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5747,11 +5852,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5765,39 +5870,39 @@ msgstr "" "du bruger Tor-browseren." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Skjult Tjeneste" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 #, fuzzy msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tilgå URL {url} ved brug af tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekræft brug af Tor på {url} ved brug af tcp{kind}" @@ -6098,18 +6203,18 @@ msgstr "Opdateringsprocessen er startet." msgid "Starting upgrade failed." msgstr "Kunne ikke starte opdatering." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Brugere og Grupper" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6117,26 +6222,26 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "Transmission BitTorrent" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6151,20 +6256,20 @@ msgstr "" "tjenester. De kan også logge ind på systemet gennem SSH og har " "administratorprivilegier (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Kunne ikke oprette LDAP-bruger." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Kunne ikke tilføje ny bruger til gruppen {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6174,39 +6279,45 @@ msgstr "" "sikkert ind på systemet uden et kodeord. Der kan defineres flere nøgler, en " "på hver linje. Tomme linjer og linjer som starter med # bliver ignoreret." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Kunne ikke omdøbe LDAP-bruger." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Kunne ikke fjerne bruger fra gruppe." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Kunne ikke tilføje bruger til gruppe." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Kunne ikke ændre LDAP-kodeord." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Kunne ikke tilføje ny bruger til admin-gruppen." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Brugerkonto oprettet, du er nu logget ind" @@ -6227,7 +6338,7 @@ msgid "Create User" msgstr "Opret Bruger" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Slet Bruger" @@ -6295,29 +6406,29 @@ msgstr "Gem Ændringer" msgid "User %(username)s created." msgstr "Bruger %(username)s oprettet." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Bruger %(username)s opdateret." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Rediger Bruger" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Brugeren {user} slettet." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Kunne ikke slette LDAP-bruger." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Ændr kodeord" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Kodeord blev ændret." @@ -6673,11 +6784,11 @@ msgstr "Kør webklient" msgid "Client Apps" msgstr "Quassel IRC-klient" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Applikation aktiveret" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Applikation deaktiveret" @@ -6685,6 +6796,17 @@ msgstr "Applikation deaktiveret" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "Distribuer Nøgle" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index be73a0435..7a8fb599a 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-31 01:40+0000\n" "Last-Translator: Ralf Barkow \n" "Language-Team: German %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Dienst %(service_name)s läuft." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Gebunden auf {kind} Port {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Gebunden an {kind} Port {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Zugangs-URL {url} über TCP{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Zugangs-URL {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Verbinden mit {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Verbindung mit {host}:{port} fehlgeschlagen" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Anwendung aktivieren" @@ -112,6 +108,16 @@ msgstr "Webserver" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Weboberfläche (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Zugangs-URL {url} über TCP{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Zugangs-URL {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Dienste-Erkennung" @@ -361,7 +367,7 @@ msgid "Create Location" msgstr "Standort anlegen" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Archiv anlegen" @@ -642,8 +648,8 @@ msgstr "DNSSEC einschalten" msgid "Enable Domain Name System Security Extensions" msgstr "Domain-Name-System-Sicherheitserweiterungen (DNSSEC) aktivieren" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Konfiguration aktualisiert" @@ -846,7 +852,7 @@ msgstr "Ausblenden von erweiterten Apps und Funktionen" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Filesharing/Dateien teilen" @@ -899,19 +905,19 @@ msgstr "" msgid "coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Upload-Passwort geändert" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Upload-Passwort konnte nicht aktualisiert werden" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Maximale Dateigröße aktualisiert" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Die maximale Dateigröße konnte nicht aktualisiert werden" @@ -927,7 +933,7 @@ msgstr "" "Der Netzwerk-Zeitserver hält Ihre Systemzeit synchron mit Servern im " "Internet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Zeit synchronisiert mit NTP-Server" @@ -947,12 +953,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- keine Zeitzone gesetzt --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Fehler beim Setzen der Zeitzone: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Zeitzone gesetzt" @@ -998,7 +1004,7 @@ msgstr "" "Der Systemdiagnosetest wird eine Reihe von Tests auf dem System durchführen, " "um zu überprüfen, ob alle Anwendungen und Dienste funktionieren." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Diagnose" @@ -1017,21 +1023,19 @@ msgid "Results" msgstr "Ergebnis" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Modul: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Diagnose-Ergebnisse" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Modul: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Dieses Modul unterstützt keine Diagnose" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1104,18 +1108,18 @@ msgstr "" msgid "Update setup" msgstr "Update-Einstellungen" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Einstellung unverändert" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Registrierung neuer Benutzer aktiviert" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Registrierung neuer Benutzer deaktiviert" @@ -1358,7 +1362,7 @@ msgstr "" msgid "Last update" msgstr "Letztes Update" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Über" @@ -1498,11 +1502,11 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Nachrichten-Archiv-Verwaltung aktiviert" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Nachrichten-Archiv-Verwaltung deaktiviert" @@ -1522,6 +1526,25 @@ msgstr "" "korrekt konfiguriert zu halten, reduziert Sicherheitsrisiken aus dem " "Internet." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"Dienst %(service_name)s ist nur im internen Netzwerk erreichbar." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"Dienst %(service_name)s ist nur im internen Netzwerk erreichbar." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1627,15 +1650,15 @@ msgstr "Einrichten beginnen" msgid "Setup Complete" msgstr "Installation abgeschlossen" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Einfaches Git Hosting" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1654,7 +1677,7 @@ msgstr "" "Git-Befehlszeilenclient oder mit mehreren verfügbaren Grafikclients " "hochladen. Und Sie können Ihren Code mit Menschen auf der ganzen Welt teilen." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1662,7 +1685,7 @@ msgstr "" "Um weiter über Git Betrieb zu lernen, schauen Sie sich die Gitanleitung an." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "Lese- und Schreibberechtigung auf Git respositories" @@ -1760,75 +1783,75 @@ msgstr "Dieses respository permanent löschen?" msgid "Delete %(name)s" msgstr "%(name)s löschen" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Archiv erstellt." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "Beim Erstellen des Repository ist ein Fehler aufgetreten." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Archiv bearbeitet." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} gelöscht." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handbuch" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Unterstützung erhalten" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Feedback abgeben" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Mitwirken" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentation und FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Über Ihre FreedomBox {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name}-Handbuch" @@ -2124,7 +2147,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonymisierungsnetzwerk" @@ -2177,11 +2200,11 @@ msgstr "Proxys" msgid "Anonymous torrents" msgstr "Anonyme Torrents" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P-Proxys und Tunnel" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2191,7 +2214,7 @@ msgstr "" "surfen. Dazu muss Ihr Browser, vorzugsweise ein Tor-Browser, für einen Proxy " "konfiguriert sein." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2200,11 +2223,11 @@ msgstr "" "Proxys und Tunnel können über die Tunnelkonfigurationsoberfläche " "konfiguriert werden." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonyme Torrents" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2252,7 +2275,6 @@ msgstr "Wiki-Anwendungen ansehen und bearbeiten" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2302,32 +2324,32 @@ msgstr "" "Diese Aktion wird alle Posts, Seiten und Kommentare einschließlich der " "Historie löschen. Dieses Wiki oder den Blog dauerhaft löschen?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} angelegt." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Wiki konnte nicht angelegt werden: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} angelegt." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog konnte nicht angelegt werden: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "{title} gelöscht." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "{title} konnte nicht gelöscht werden: {error}" @@ -2394,15 +2416,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript-Lizenzinformation" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Zertifikate" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2418,7 +2440,7 @@ msgstr "" "Zertifizierungsstelle Let's Encrypt nachweist, der Inhaber einer Domain zu " "sein." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2482,6 +2504,7 @@ msgstr "Wieder beziehen" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Löschen" @@ -2502,7 +2525,7 @@ msgstr "" "Es wurden keine Domains konfiguriert. Um Zertifikate erhalten zu können, " "müssen Domains konfiguriert werden." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2511,29 +2534,29 @@ msgstr "" "Zertifikat erfolgreich widerrufen für Domain {domain}. Es kann einige " "Momente dauern, bis dies in Kraft tritt." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Zertifikat erfolgreich bezogen für Domain {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Fehler beim Beziehen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" @@ -2659,11 +2682,11 @@ msgstr "" "Encrypt, um eines zu beziehen.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Öffentliche Registrierung aktiviert" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Öffentliche Registrierung deaktiviert" @@ -2749,36 +2772,36 @@ msgstr "" "können das Wiki lesen oder ändern. Außerdem wird die öffentliche " "Registrierung deaktiviert." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Passwort geändert" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Öffentliche Registrierung aktiviert" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Öffentliche Registrierung deaktiviert" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Privater Modus aktiviert" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Privater Modus ausgeschaltet" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Block-Sandkasten" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2845,27 +2868,27 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Einstellung für Maximale Spielerzahl aktualisiert" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Kreativ-Modus-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Spieler-gegen-Spieler-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "Einfacher Medienserver" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2883,7 +2906,7 @@ msgstr "" "Smartphones, Fernseher und Gaming-Systeme (wie PS3 und Xbox 360) oder " "Anwendungen wie Totem und Kodi." -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "Medien-Streaming-Server" @@ -2925,7 +2948,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3149,15 +3172,15 @@ msgstr "Veröffentlichte Schlüssel auf dem Server." msgid "Error occurred while publishing key." msgstr "Fehler beim Veröffentlichen des Schlüssels." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Sprachkonferenz" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3165,7 +3188,7 @@ msgstr "" "Mumble ist eine hochwertige quelloffene Software für Telefonie und Chat, mit " "Verschlüsselung und geringer Latenz." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3195,7 +3218,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3247,7 +3270,7 @@ msgstr "" "Geräte die mit anderen Methoden verwaltet werden, können hier möglicherweise " "nicht konfiguriert werden." -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC wird auf IPv{kind} verwendet" @@ -3502,96 +3525,96 @@ msgstr "WPA" msgid "Open" msgstr "Offen" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netzwerkverbindungen" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Kann Verbindung nicht anzeigen: Verbindung nicht gefunden." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Verbindungsinformationen" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Kann Verbindung nicht bearbeiten: Verbindung nicht gefunden." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Dieser Verbindungstyp ist noch nicht bekannt." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Verbindung bearbeiten" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Verbindung {name} aktiviert." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Fehler beim Einschalten der Verbindung: Verbindung nicht gefunden." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Fehler beim Einschalten der Verbindung {name}: Kein geeignetes Gerät " "verfügbar." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Verbindung {name} ausgeschaltet." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Konnte Verbindung nicht ausschalten: Verbindung nicht gefunden." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "WLANs in der Nähe" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Verbindung hinzufügen" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Neue generische Verbindung wird hinzugefügt" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Neue Ethernet-Verbindung wird hinzugefügt" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Neue PPPoE-Verbindung wird hinzugefügt" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "WLAN-Verbindung wird hinzugefügt" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Verbindung {name} gelöscht." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Verbindung löschen" @@ -3638,7 +3661,6 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Gerät" @@ -3953,11 +3975,11 @@ msgstr "" msgid "Download my profile" msgstr "Mein Profil herunterladen" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Einrichtung beendet." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Einrichtung fehlgeschlagen." @@ -4321,15 +4343,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Jetzt herunterfahren" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4340,7 +4362,7 @@ msgstr "" "kontrolliert den Zugang und entfernt Reklame und anderen abscheulichen " "Internet-Müll. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4355,7 +4377,7 @@ msgstr "" "unter http://config.privoxy.org/ " "oder http://p.p einsehen." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" @@ -4518,7 +4540,7 @@ msgstr "" "freedombox.adresse>) und ihren Benutzernamen. Wenn Sie auf den Suchen-Knopf " "drücken, werden die bestehenden Kalender und Adressbücher aufgelistet." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Konfiguration der Zugangsrechte aktualisiert" @@ -4682,112 +4704,166 @@ msgstr "" "lesssecureapps\" >https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Festplatte oder Partition auswählen" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Bezeichnung" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Geteilt" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domain-Name" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Einhängepunkt" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Genutzt" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Verfügbare Domains" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Freigabe hinzugefügt." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Aktionen" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Freigabe hinzufügen" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Freigabe hinzufügen" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Homepage" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Freigabe gelöscht." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Freigabe geändert." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Websuche" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4795,7 +4871,7 @@ msgstr "" "Searx ist eine Internet-Metasuchmaschine, die die Privatsphäre respektiert. " "Sie sammelt und zeigt Ergebnisse von mehreren Suchmaschinen an." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4803,7 +4879,7 @@ msgstr "" "Searx kann verwendet werden, um Nachverfolgung und Profiling durch " "Suchmaschinen zu vermeiden. Standardmäßig werden keine Cookies gespeichert." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Suche im Web" @@ -4838,8 +4914,8 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Erlauben, diese Anwendung von jedem nutzen zu lassen, der sie erreichen kann." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Konfiguration aktualisiert." @@ -4891,25 +4967,52 @@ msgstr "" "Sicherheitslücken auf." #: plinth/modules/security/templates/security_report.html:33 +#, fuzzy +#| msgid "" +#| "The following table lists the current reported number, and historical " +#| "count, of security vulnerabilities for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "Die folgende Tabelle listet die derzeit gemeldete Anzahl und die vorherigen " "Zählung von Sicherheitslücken für jede installierte Anwendung auf." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Anwendungsname" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "Aktuelle Sicherheitslücken anzeigen" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Frühere Sicherheitslücken anzeigen" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Block-Sandkasten" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "ja" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Keiner" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5316,7 +5419,7 @@ msgstr "Speicherauszug erstellt." msgid "Storage snapshots configuration updated" msgstr "Konfiguration der Speicherauszüge aktualisiert" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Aktionsfehler: {0} [{1}] [{2}]" @@ -5550,11 +5653,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Public share" -msgid "Samba share" -msgstr "Öffentlich freigeben" +#| msgid "Shared" +msgid "Share" +msgstr "Geteilt" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5562,6 +5665,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Die folgenden Speichermedien werden verwendet:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Bezeichnung" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Einhängepunkt" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partitions-Erweiterung" @@ -5678,7 +5789,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Verteilter Dateispeicher" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5691,7 +5802,7 @@ msgstr "" "Knoten ausfallen, können Ihre Dateien von den restlichen Knoten " "wiederhergestellt werden." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5742,11 +5853,11 @@ msgstr "Verbundene Vermittler" msgid "Remove" msgstr "Entfernen" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5760,36 +5871,36 @@ msgstr "" "Sie den Tor Browser verwenden." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "Tor-Onion-Dienste" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor-Socks-Proxy" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Zugangs-URL {url} auf TCP{kind} über Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" @@ -6089,11 +6200,11 @@ msgstr "Aktualisierung gestartet." msgid "Starting upgrade failed." msgstr "Starten der Aktualisierung fehlgeschlagen." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Benutzer und Gruppen" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -6104,7 +6215,7 @@ msgstr "" "muss ein Benutzerkonto Teil einer Gruppe sein, damit ein Benutzer auf die " "App zugreifen kann." -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6116,24 +6227,24 @@ msgstr "" "dürfen nur Mitglieder der Gruppe admin Apps oder " "Systemeinstellungen ändern." -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Benutzername wird bereits verwendet oder ist reserviert." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Berechtigungen" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6148,20 +6259,20 @@ msgstr "" "allen Diensten anmelden und sie können sich auch über SSH im System anmelden " "und besitzen Administratorrechte (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Erstellen des LDAP-Benutzers ist fehlgeschlagen." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Der Benutzer konnte nicht der Gruppe {group} hinzugefügt werden." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Autorisierte SSH-Schlüssel" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6172,39 +6283,45 @@ msgstr "" "eingeben, einen pro Zeile. Leerzeilen und Zeilen, die mit # beginnen, werden " "ignoriert." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Umbenennen des LDAP-Benutzers fehlgeschlagen." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Entfernen des Benutzers von der Gruppe fehlgeschlagen." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "SSH-Schlüssel kann nicht gesetzt werden." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Ändern des LDAP-Benutzerpassworts ist fehlgeschlagen." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Hinzufügen eines neuen Benutzers zur admin-Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Einschränken des Konsolenzugriffs fehlgeschlagen." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Benutzerkonto wurde erstellt, Sie sind jetzt angemeldet" @@ -6225,7 +6342,7 @@ msgid "Create User" msgstr "Benutzer anlegen" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Benutzer löschen" @@ -6292,29 +6409,29 @@ msgstr "Änderungen speichern" msgid "User %(username)s created." msgstr "Benutzer %(username)s angelegt." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Benutzer %(username)s geändert." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Benutzer bearbeiten" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Benutzer {user} gelöscht." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Löschen von LDAP-Benutzer fehlgeschlagen." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Passwort ändern" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." @@ -6663,11 +6780,11 @@ msgstr "Webclient starten" msgid "Client Apps" msgstr "Client-Anwendungen" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Anwendung aktiviert" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Anwendung deaktiviert" @@ -6675,6 +6792,22 @@ msgstr "Anwendung deaktiviert" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Festplatte oder Partition auswählen" + +#, fuzzy +#~| msgid "Public share" +#~ msgid "Samba share" +#~ msgstr "Öffentlich freigeben" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index fe24087cd..b5627b1c9 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,40 +21,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -106,6 +101,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -336,7 +341,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -582,8 +587,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -756,7 +761,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -797,19 +802,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -823,7 +828,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -841,12 +846,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -888,7 +893,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -907,21 +912,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -984,18 +985,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1189,7 +1190,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1306,11 +1307,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1326,6 +1327,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1417,15 +1433,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1436,13 +1452,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1536,75 +1552,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1825,7 +1841,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1870,28 +1886,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1928,7 +1944,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1976,32 +1991,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2060,15 +2075,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2078,7 +2093,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2136,6 +2151,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2154,36 +2170,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2271,11 +2287,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2341,36 +2357,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2425,27 +2441,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2456,7 +2472,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2492,7 +2508,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2687,21 +2703,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2726,7 +2742,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2767,7 +2783,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2993,94 +3009,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3127,7 +3143,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3402,11 +3417,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3713,22 +3728,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3738,7 +3753,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3864,7 +3879,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3981,112 +3996,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4118,8 +4177,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4165,21 +4224,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4534,7 +4610,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4739,10 +4815,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4750,6 +4826,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4846,7 +4930,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4854,7 +4938,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4897,11 +4981,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4910,36 +4994,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5183,18 +5267,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5202,24 +5286,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5228,59 +5312,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5301,7 +5389,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5362,29 +5450,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5701,11 +5789,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index b2d02d5db..5dca59512 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-26 13:21+0000\n" "Last-Translator: Nektarios Katakis \n" "Language-Team: Greek Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1564,75 +1580,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1853,7 +1869,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1898,28 +1914,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1956,7 +1972,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2004,32 +2019,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2088,15 +2103,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2106,7 +2121,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2164,6 +2179,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2182,36 +2198,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2299,11 +2315,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2369,36 +2385,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2453,27 +2469,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2484,7 +2500,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2520,7 +2536,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2715,21 +2731,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2754,7 +2770,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2795,7 +2811,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3021,94 +3037,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3155,7 +3171,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3430,11 +3445,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3741,22 +3756,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3766,7 +3781,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3892,7 +3907,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4009,112 +4024,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4146,8 +4205,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4193,21 +4252,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4562,7 +4638,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4767,10 +4843,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4778,6 +4854,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4874,7 +4958,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4882,7 +4966,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4925,11 +5009,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4938,36 +5022,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5211,18 +5295,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5230,24 +5314,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5256,59 +5340,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5329,7 +5417,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5390,29 +5478,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5729,11 +5817,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 2538fae9e..1cb75b859 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-11 16:43+0000\n" "Last-Translator: Luis A. Arizmendi \n" "Language-Team: Spanish %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "El servidor %(service_name)s se está ejecutando." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Escuchando en el puerto {kind} {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Escuchando en el puerto {port} {kind}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Acceso a {url} en tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Acceso a {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Conectar a {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "No se pudo conectar a {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Activar aplicación" @@ -110,6 +106,16 @@ msgstr "Servidor Web" msgid "{box_name} Web Interface (Plinth)" msgstr "Interfaz web (Plinth) de {box_name}" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Acceso a {url} en tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Acceso a {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Detección de servicios" @@ -363,7 +369,7 @@ msgid "Create Location" msgstr "Crear sitio" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Crear repositorio" @@ -640,8 +646,8 @@ msgstr "Activar DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Activar Extensiones de Seguridad del Sistema de Nombre de Dominios" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Configuración actualizada" @@ -840,7 +846,7 @@ msgstr "Ocultando aplicaciones y funciones avanzadas" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Compartir archivos" @@ -892,19 +898,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Clave para compartir actualizada" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Falló la actualización de la clave para compartir" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Tamaño máximo actualizado" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Falló al actualizar el tamaño máximo" @@ -920,7 +926,7 @@ msgstr "" "El servidor de tiempo de red (servicio NTP) mantiene sincronizada la hora " "del sistema con servidores de Internet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Hora sincronizada con el servidor NTP" @@ -940,12 +946,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- Zona horaria no definida --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Error al definir zona horaria: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Zona horaria asignada" @@ -991,7 +997,7 @@ msgstr "" "El test de diagnóstico del sistema ejecuta una serie de comprobaciones para " "confirmar que las aplicaciones y servicios están funcionando como se espera." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Test de diagnóstico" @@ -1010,21 +1016,19 @@ msgid "Results" msgstr "Resultados" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Módulo: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Resultado del diagnóstico" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Módulo: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Este módulo no soporta diagnósticos" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1097,18 +1101,18 @@ msgstr "" msgid "Update setup" msgstr "Actualizar configuración" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Configuración sin cambio" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Registro de usuarias/os activado" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Registro de usuarias/os desactivado" @@ -1347,7 +1351,7 @@ msgstr "" msgid "Last update" msgstr "Última actualización" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Acerca de" @@ -1484,11 +1488,11 @@ msgstr "" msgid "Configuration" msgstr "Configuración" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Gestión activa de mensajes activada" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Gestión activa de mensajes desactivada" @@ -1507,6 +1511,23 @@ msgstr "" "de su {box_name}. Mantenerlo activado y correctamente configurado reduce el " "riesgo de amenazas de seguridad desde Internet." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "%(service_name)s solo está disponible en redes internas." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "%(service_name)s solo está disponible en redes internas." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1611,15 +1632,15 @@ msgstr "Iniciar configuración" msgid "Setup Complete" msgstr "Configuración completada" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Alojamiento simple para Git" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1637,7 +1658,7 @@ msgstr "" "cliente Git de línea de comandos o múltiples clientes gráficos. Y puedes " "compartir tu código con gente de todo el mundo." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1645,7 +1666,7 @@ msgstr "" "Para aprender más acerca de cómo usar Git visita el tutorial de Git." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" @@ -1740,75 +1761,75 @@ msgstr "¿Eliminar este repositorio definitivamente?" msgid "Delete %(name)s" msgstr "Eliminar %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Repositorio creado." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "Ha habido un error al crear el repositorio." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Repositorio editado." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Ha habido un error en la configuración." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} eliminado." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Documentación" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Obtener Soporte" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Enviar Comentarios" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Contribuir" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Documentación y Preguntas frecuentes" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Acerca de {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Manual de {box_name}" @@ -2100,7 +2121,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Red anónima" @@ -2153,11 +2174,11 @@ msgstr "Proxy" msgid "Anonymous torrents" msgstr "Torrents anónimos" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P Proxys y Túneles" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2167,7 +2188,7 @@ msgstr "" "de manera anónima. Para esto, tu navegador, preferiblemente un Navegador " "Tor, necesita estar configurado para un proxy." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2176,11 +2197,11 @@ msgstr "" "adicionales y túneles pueden ser configurados usando la interfaz de " "configuración de túnel." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Torrents Anónimos" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2228,7 +2249,6 @@ msgstr "Aplicaciones wiki para ver y editar" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipo" @@ -2278,32 +2298,32 @@ msgstr "" "Esta acción borrará todas las entradas, páginas y comentarios incluido el " "historial. ¿Eliminar este wiki o blog definitivamente?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} creado." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "No se pudo crear el wiki: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} creado." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "No se pudo crear el blog: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "{title} eliminado." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "No se pudo eliminar {title}: {error}" @@ -2370,15 +2390,15 @@ msgstr "" msgid "JavaScript license information" msgstr "Información de licencia de JavaScript" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certificados" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2393,7 +2413,7 @@ msgstr "" "mostrándose a sí mismo como propietario de un dominio a Let's Encrypt, " "autoridad de certificación (CA)." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2456,6 +2476,7 @@ msgstr "Volver a obtener" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Eliminar" @@ -2476,7 +2497,7 @@ msgstr "" "No se ha configurado ningún dominio. Configure " "alguno para poder asignarle un certificado." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2485,29 +2506,29 @@ msgstr "" "El certificado para el dominio {domain} ha sido revocado con éxito. " "Necesitará unos momentos para tener efecto." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Falló la revocación del certificado para el dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Se ha obtenido con éxito el certificado para el dominio {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Falló la obtención del certificado para el dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}" @@ -2633,11 +2654,11 @@ msgstr "" " para obtener uno.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Registro público activado" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Registro público desactivado" @@ -2721,36 +2742,36 @@ msgstr "" "una cuenta pueden leer/escribir en el wiki. El registro público también será " "desactivado." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Clave actualizada" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Habilitado el registro público" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Inhabilitado el registro público" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Activado el modo privado" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Desactivado el modo privado" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Sandbox de bloques" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2817,29 +2838,29 @@ msgstr "Dirección" msgid "Port" msgstr "Puerto" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Configuración de número máximo de jugadoras/es actualizada" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Configuración del modo creativo actualizada" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Configuración PVP actualizada" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Configuración de daño actualizada" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Servidor Mumble de chat de voz" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2850,7 +2871,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2886,7 +2907,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3107,15 +3128,15 @@ msgstr "Publicada la clave en el servidor de claves." msgid "Error occurred while publishing key." msgstr "Se ha producido un error al publicar la clave." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Chat de voz" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3123,7 +3144,7 @@ msgstr "" "Mumble es un software libre de gran calidad para chat de voz, de baja " "latencia y con cifrado." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3153,7 +3174,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3204,7 +3225,7 @@ msgstr "" "Los dispositivos administrados mediante otros métodos quizá no estén " "disponibles para configurarse aquí." -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC en uso sobre IPv{kind}" @@ -3455,96 +3476,96 @@ msgstr "WPA" msgid "Open" msgstr "Abierto" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Conexiones de red" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "No se puede mostrar la conexión: no se encontró." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Información de la conexión" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "No se puede editar la conexión: no se encontró." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Este tipo de conexión no está aún soportada." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Editar conexión" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Activar conexión {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Ha fallado la activación de la conexión: no se encontró." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Ha fallado la activación de la conexión {name}: no hay ningún dispositivo " "disponible." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Conexión {name} desactivada." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Ha fallado la desactivación de la conexión: no se encontró." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Redes Wi-Fi cercanas" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Añadir conexión" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Añadir nueva conexión genérica" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Añadir nueva conexión Ethernet" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Añadir nueva conexión PPPoE" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Añadir nueva conexión Wi-Fi" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Conexión {name} eliminada." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Ha fallado la eliminación de la conexión: no se encontró." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Eliminar conexión" @@ -3591,7 +3612,6 @@ msgid "yes" msgstr "sí" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Dispositivo" @@ -3897,11 +3917,11 @@ msgstr "" msgid "Download my profile" msgstr "Descargar mi perfil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Configuración completada." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Ha fallado la configuración." @@ -4248,15 +4268,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Apagar ahora" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Proxy Web" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4267,7 +4287,7 @@ msgstr "" "cabeceras HTTP, controlar el acceso y eliminar publicidad y otra basura de " "Internet. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4282,7 +4302,7 @@ msgstr "" "documentación en http://config." "privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" @@ -4442,7 +4462,7 @@ msgstr "" "address>) y su nombre de usuario. Pulsando en el botón de búsqueda le " "mostrará un listado de los calendarios y agendas existentes." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Configuración de derechos de acceso actualizada" @@ -4604,11 +4624,11 @@ msgstr "" "google.com/settings/security/lesssecureapps\">https://www.google.com/" "settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4616,98 +4636,165 @@ msgstr "" "Samba permite compartir archivos y carpetas entre FreedomBox y otras " "computadoras en su red local." -#: plinth/modules/samba/__init__.py:53 -#, python-brace-format +#: plinth/modules/samba/__init__.py:56 +#, fuzzy, python-brace-format +#| msgid "" +#| "After installation, you can choose which disks to use for sharing. " +#| "Enabled {hostname} shares are open to everyone in your local network and " +#| "are accessible under Network section in the file manager on your computer." msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" "Tras instalarlo puede elegir qué disco se comparte. Los elementos " "compartidos en {hostname} son accesibles para cualquier persona en su red " "local, y pueden encontrarse en la sección \"Red local\" de su gestor de " "archivos." -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" -msgstr "Acceso a carpetas compartidas desde el servidor" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." +msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "Seleccionar discos para compartir" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." +msgstr "" + +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Compartido" + +#: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directory will be shared on selected disks, " +#| "not the whole disk." +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." msgstr "" "Nota: Solo se compartirá una carpeta especialmente creada para ello, no se " "compartirá el disco completo." -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Etiqueta" +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Nombre de dominio" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Punto de montaje" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Usado" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "Las particiones vfat no están soportadas" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" -msgstr "Compartir está configurado pero el disco no está disponible" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." +msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Dominios disponibles" + +#: plinth/modules/samba/templates/samba.html:120 +#, fuzzy +#| msgid "" +#| "If the disk is plugged back in, sharing will be automatically enabled." +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." msgstr "" "Si el disco se conecta de nuevo, los elementos compartidos estarán " "accesibles automáticamente." -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "Nombre de compartición" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "Acción" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Añadir compartición" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Añadir compartición" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Página inicio" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "Compartición activada." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Error al activar compartición: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 msgid "Share disabled." msgstr "Compartición desactivada." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Error al desactivar compartición: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Buscador web" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4715,7 +4802,7 @@ msgstr "" "Searx es un motor de búsqueda en Internet que respeta la privacidad. Recoge " "y muestra los resultados de múltiples buscadores." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4723,7 +4810,7 @@ msgstr "" "Searx se puede usar para evitar el rastreo y la creación de perfiles que " "realizan los buscadores. Por defecto no almacena cookies." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Buscar en la web" @@ -4758,8 +4845,8 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permitir que esta aplicación la use cualquiera que pueda acceder a ella." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Configuración actualizada." @@ -4811,25 +4898,52 @@ msgstr "" "vulnerabilidades de seguridad." #: plinth/modules/security/templates/security_report.html:33 +#, fuzzy +#| msgid "" +#| "The following table lists the current reported number, and historical " +#| "count, of security vulnerabilities for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "Esta lista muestra las cantidades actuales e históricamente acumuladas de " "vulnerabilidades de seguridad para cada app instalada." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Nombre de la app" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "Vulnerabilidades Actuales" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Vulnerabilidades Anteriores" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Sandbox de bloques" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "sí" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Ninguno" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5233,7 +5347,7 @@ msgstr "Instantánea creada." msgid "Storage snapshots configuration updated" msgstr "Configuración de almacenamiento de instantáneas actualizada" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Acción de error: {0} [{1}] [{2}]" @@ -5460,11 +5574,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Samba" -msgid "Samba share" -msgstr "Samba" +#| msgid "Shared" +msgid "Share" +msgstr "Compartido" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5472,6 +5586,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Se están usando los siguientes dispositivos de almacenamiento:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Etiqueta" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Punto de montaje" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Expandir la partición" @@ -5586,7 +5708,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Almacén de archivos distribuido" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5599,7 +5721,7 @@ msgstr "" "de los nodos fallara, sus archivos seguirían estando disponibles a través " "del resto de nodos." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5649,11 +5771,11 @@ msgstr "Presentadores conectados" msgid "Remove" msgstr "Eliminar" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5667,36 +5789,36 @@ msgstr "" "download/download-easy.html.en\">Navegador Tor para tener la mejor " "protección cuando navega por la red." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "Servicio Tor Onion" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Proxy Socks para Tor" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Acceso a URL {url} sobre tcp {kind} vía Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" @@ -5991,11 +6113,11 @@ msgstr "Proceso de actualización iniciado." msgid "Starting upgrade failed." msgstr "No se ha podido iniciar la actualización." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Usuarias/os y grupos" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -6006,7 +6128,7 @@ msgstr "" "requieren que además la cuenta de usuario conste en un grupo para " "autorizarles a acceder." -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6018,24 +6140,24 @@ msgstr "" "sólo los usuarios del grupo admin pueden cambiar configuraciones de " "apps o del sistema." -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Acceso a todos los servicios y configuraciones del sistema" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "El nombre de usuaria/o está en uso o reservado." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Permisos" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6050,20 +6172,20 @@ msgstr "" "servicios, también podrán acceder al sistema por SSH con privilegios de " "administración (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Ha fallado la creación de usuaria/o LDAP." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Ha fallado añadir usuaria/o nuevo al grupo {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Claves de SSH autorizadas" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6073,39 +6195,45 @@ msgstr "" "de una clave. Puede introducir más de una clave, cada una en una línea. Las " "líneas en blanco y las que empiecen por # se ignorarán." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Ha fallado renombrar al o la usuaria LDAP." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Ha fallado la eliminación del o de la usuaria del grupo." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Ha fallado añadir al o la usuaria al grupo." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "No es posible configurar las claves SSH." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Ha fallado añadir al o la usuaria al grupo." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "No se puede eliminar la única cuenta de administración del sistema." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Ha fallado cambiar la clave del o de la usuaria LDAP." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Ha fallado añadir usuaria/o nueva/o al grupo admin." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Falló al restringir el acceso a la consola." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Creada cuenta de usuaria/o, ya está usted en el sistema" @@ -6126,7 +6254,7 @@ msgid "Create User" msgstr "Crear usuaria/o" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Eliminar usuaria/o" @@ -6192,29 +6320,29 @@ msgstr "Guardar cambios" msgid "User %(username)s created." msgstr "Se ha creado el o la usuaria %(username)s." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "El o la usuaria %(username)s se ha actualizado." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Editar usuario" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "El o la usuaria {user} se ha eliminado." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Ha fallado la eliminación del o de la usuaria LDAP." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Cambiar clave de acceso" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." @@ -6558,11 +6686,11 @@ msgstr "Lanzar cliente web" msgid "Client Apps" msgstr "Aplicaciones de cliente" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Aplicación activada" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Aplicación desactivada" @@ -6570,6 +6698,26 @@ msgstr "Aplicación desactivada" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Módulo: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Módulo: %(module_name)s" + +#~ msgid "Access shared folders from inside the server" +#~ msgstr "Acceso a carpetas compartidas desde el servidor" + +#~ msgid "Select disks for sharing" +#~ msgstr "Seleccionar discos para compartir" + +#~ msgid "Shares configured but the disk is not available" +#~ msgstr "Compartir está configurado pero el disco no está disponible" + +#, fuzzy +#~| msgid "Samba" +#~ msgid "Samba share" +#~ msgstr "Samba" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 85b04cb3c..430479f99 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2016-08-12 15:51+0000\n" "Last-Translator: Masoud Abkenar \n" "Language-Team: Persian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1734,79 +1752,79 @@ msgstr "اتصال %(name)s را برای همیشه پاک م msgid "Delete %(name)s" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "Error occurred while publishing key." msgid "An error occurred while creating the repository." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} پاک شد." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "راهنما" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "کتاب راهنما" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "راهنما و پرسش‌های رایج" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "دربارهٔ {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "کتاب راهنمای {box_name}" @@ -2067,7 +2085,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy msgid "Anonymity Network" msgstr "رفتن به تنظیمات شبکه" @@ -2120,28 +2138,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2191,7 +2209,6 @@ msgstr "سرویس‌ها و برنامه‌ها" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "نوع" @@ -2241,33 +2258,33 @@ msgstr "" "این کار همهٔ نوشته‌ها، صفحه‌ها، نظرها، و تاریخچهٔ آن‌ها را حذف می‌کند. آیا به " "پاک‌کردن ویکی یا وبلاگ ادامه می‌دهید؟" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "ویکی {name} ساخته شد." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "ساختن ویکی شکست خورد: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "وبلاگ {name} ساخته شد." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "ساختن وبلاگ شکست خورد: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} پاک شد." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2329,19 +2346,19 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "گواهی دیجیتال (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "وضعیت گواهی دیجیتال" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -2362,7 +2379,7 @@ msgstr "" "برای این کار {box_name} به Let's Encrypt (که یک مرجع صدور گواهی دیجیتال است) " "اثبات می‌کند که مالک دامنه است." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -2438,6 +2455,7 @@ msgstr "بازپس‌گیری" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "پاک‌کردن" @@ -2456,7 +2474,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2464,30 +2482,30 @@ msgid "" "moments to take effect." msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "گواهی دیجیتال برای دامنهٔ {domain} با موفقیت گرفته شد" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2577,11 +2595,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy msgid "Public registration disabled" msgstr "برنامه نصب شد." @@ -2652,42 +2670,42 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "رمز" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy msgid "Public registrations enabled" msgstr "برنامه نصب شد." -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy msgid "Public registrations disabled" msgstr "برنامه نصب شد." -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy msgid "Private mode disabled" msgstr "برنامه نصب شد." -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2751,35 +2769,35 @@ msgstr "نشانی" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2790,7 +2808,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2826,7 +2844,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3041,23 +3059,23 @@ msgstr "کلید در پایگاه کلیدها منتشر شد." msgid "Error occurred while publishing key." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "چت صوتی (Mumble)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "مامبل (Mumble) یک نرم‌افزار چت صوتی متن‌باز، کم‌تأخیر، و باکیفیت است." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3087,7 +3105,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -3128,7 +3146,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "در حال استفاده از DNSSEC روی IPv{kind}" @@ -3395,94 +3413,94 @@ msgstr "WPA" msgid "Open" msgstr "باز" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "اتصال‌های شبکه" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "نمی‌توان اتصال را نشان داد: اتصالی پیدا نشد." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "اطلاعات اتصال" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "نمی‌توان اتصال را ویراست: اتصالی پیدا نشد." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "از این نوع اتصال هنوز پشتیبانی نمی‌شود." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "ویرایش اتصال" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "اتصال {name} فعال شد." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "فعال‌سازی اتصال شکست خورد: اتصالی پیدا نشد." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "فعال‌سازی اتصال {name} شکست خورد: دستگاه مناسبی موجود نیست." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "اتصال {name} غیرفعال شد." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "غیرفعال‌سازی اتصال شکست خورد: اتصالی پیدا نشد." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "شبکه‌های بی‌سیم در نزدیکی" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "افزودن اتصال" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "افزودن یک اتصال عام تازه" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "افزودن اتصال اترنت تازه" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "افزودن اتصال PPPoE تازه" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "افزودن اتصال Wi-Fi تازه" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "اتصال {name} پاک شد." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نشد." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "پاک‌کردن اتصال" @@ -3529,7 +3547,6 @@ msgid "yes" msgstr "بله" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "وسیله" @@ -3818,11 +3835,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -4136,22 +4153,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4161,7 +4178,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4289,7 +4306,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4411,125 +4428,181 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "مشترک" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "نام دامنه" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "نشانی سوارشدن (mount point)" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 #, fuzzy msgid "Used" msgstr "به‌کاربرده" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "دامنه‌های موجود" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Shared" msgid "Share name" msgstr "مشترک" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "کنش‌ها" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Shared" +msgid "Open Share" +msgstr "مشترک" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Shared" +msgid "Group Share" +msgstr "مشترک" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Shared" +msgid "Home Share" +msgstr "مشترک" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} پاک شد." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "مشترک" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "سرور وب" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4563,8 +4636,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4614,23 +4687,43 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "نام" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +msgid "Sandboxed" +msgstr "بازی مکعب‌ها (Minetest)" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "بله" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" @@ -5024,7 +5117,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -5248,11 +5341,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "انتشار کلید" +#| msgid "Shared" +msgid "Share" +msgstr "مشترک" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5262,6 +5355,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "دیسک‌های زیر در حال استفاده هستند:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "نشانی سوارشدن (mount point)" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5364,7 +5465,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5372,7 +5473,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5419,11 +5520,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5432,36 +5533,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5712,18 +5813,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5731,24 +5832,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5757,59 +5858,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "ساختن کاربر LDAP شکست خورد." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add new user to admin group." +msgid "Failed to change user status." +msgstr "افزودن کاربر به گروه مدیران شکست خورد." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید" @@ -5830,7 +5937,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5896,29 +6003,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -6243,11 +6350,11 @@ msgstr "" msgid "Client Apps" msgstr "برنامهٔ تحت وب بیت‌تورنت (Deluge)" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" @@ -6255,6 +6362,19 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~ msgid "Module: %(module)s" +#~ msgstr "واحد: %(module)s" + +#, fuzzy +#~ msgid "Module: %(module_name)s" +#~ msgstr "واحد: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "انتشار کلید" + #~ msgid "Create a Wiki or Blog" #~ msgstr "یک ویکی یا وبلاگ بسازید" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 9d725dc2b..67742cd1a 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1850,83 +1871,83 @@ msgstr "DELETE USER PERMANENTLY?" msgid "Delete %(name)s" msgstr "DELETE %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "AN ERROR OCCURRED DURING CONFIGURATION." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "AN ERROR OCCURRED DURING CONFIGURATION." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} DELETED." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "DOCUMENTATION" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "MANUAL" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "DOCUMENTATION AND FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "ABOUT {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} MANUAL" @@ -2194,7 +2215,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" @@ -2251,28 +2272,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2313,7 +2334,6 @@ msgstr "SERVICES AND APPLICATIONS" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "TYPE" @@ -2363,33 +2383,33 @@ msgstr "" "THIS ACTION WILL REMOVE ALL THE POSTS, PAGES AND COMMENTS INCLUDING REVISION " "HISTORY. DELETE THIS WIKI OR BLOG PERMANENTLY?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "CREATED WIKI {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "COULD NOT CREATE WIKI: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "CREATED BLOG {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "COULD NOT CREATE BLOG: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} DELETED." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2453,19 +2473,19 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "CERTIFICATES (LET'S ENCRYPT)" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "CERTIFICATE STATUS" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -2486,7 +2506,7 @@ msgstr "" "DOMAIN. IT DOES SO BY PROVING ITSELF TO BE THE OWNER OF A DOMAIN TO LET'S " "ENCRYPT, A CERTFICATE AUTHORITY (CA)." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -2563,6 +2583,7 @@ msgstr "RE-OBTAIN" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "DELETE" @@ -2581,7 +2602,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2589,30 +2610,30 @@ msgid "" "moments to take effect." msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "CERTIFICATE SUCCESSFULLY OBTAINED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2712,13 +2733,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "APPLICATIONS" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2792,48 +2813,48 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "PASSWORD" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Applications" msgid "Public registrations enabled" msgstr "APPLICATIONS" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Applications" msgid "Public registrations disabled" msgstr "APPLICATIONS" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PAGEKITE ENABLED" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" msgstr "PAGEKITE DISABLED" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" msgstr "BLOCKED" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2894,37 +2915,37 @@ msgstr "ADDRESS" msgid "Port" msgstr "PORT" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "MUMBLE VOICE CHAT SERVER" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2935,7 +2956,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2971,7 +2992,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3234,17 +3255,17 @@ msgstr "PUBLISHED KEY TO KEYSERVER." msgid "Error occurred while publishing key." msgstr "ERROR OCCURRED WHILE PUBLISHING KEY." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "VOICE CHAT (MUMBLE)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3252,7 +3273,7 @@ msgstr "" "MUMBLE IS AN OPEN SOURCE, LOW-LATENCY, ENCRYPTED, HIGH QUALITY VOICE CHAT " "SOFTWARE." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3282,7 +3303,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3325,7 +3346,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "USING DNSSEC ON IPV{kind}" @@ -3583,98 +3604,98 @@ msgstr "" msgid "Open" msgstr "OPENVPN" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "NETWORK CONNECTIONS" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "CANNOT SHOW CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 #, fuzzy #| msgid "Show Connection information" msgid "Connection Information" msgstr "SHOW CONNECTION INFORMATION" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "CANNOT EDIT CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "THIS TYPE OF CONNECTION IS NOT YET UNDERSTOOD." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "EDIT CONNECTION" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "ACTIVATED CONNECTION {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "FAILED TO ACTIVATE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "FAILED TO ACTIVATE CONNECTION {name}: NO SUITABLE DEVICE IS AVAILABLE." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "DEACTIVATED CONNECTION {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "FAILED TO DE-ACTIVATE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "NEARBY WI-FI NETWORKS" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "ADD CONNECTION" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 #, fuzzy #| msgid "Adding New Ethernet Connection" msgid "Adding New Generic Connection" msgstr "ADDING NEW ETHERNET CONNECTION" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "ADDING NEW ETHERNET CONNECTION" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "ADDING NEW PPPOE CONNECTION" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "ADDING NEW WI-FI CONNECTION" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "CONNECTION {name} DELETED." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "DELETE CONNECTION" @@ -3721,7 +3742,6 @@ msgid "yes" msgstr "YES" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "DEVICE" @@ -4044,11 +4064,11 @@ msgstr "PROFILE IS SPECIFIC TO EACH USER OF %(box_name)s. KEEP IT A SECRET." msgid "Download my profile" msgstr "DOWNLOAD MY PROFILE" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "SETUP COMPLETED." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "SETUP FAILED." @@ -4415,19 +4435,19 @@ msgstr "" msgid "Shut Down Now" msgstr "SHUT DOWN NOW" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "ENABLE PRIVOXY" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "PRIVOXY WEB PROXY" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 #, fuzzy #| msgid "" #| "Privoxy is a non-caching web proxy with advanced filtering capabilities " @@ -4442,7 +4462,7 @@ msgstr "" "ENHANCING PRIVACY, MODIFYING WEB PAGE DATA AND HTTP HEADERS, CONTROLLING " "ACCESS, AND REMOVING ADS AND OTHER OBNOXIOUS INTERNET JUNK." -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, fuzzy, python-brace-format #| msgid "" #| "You can use Privoxy by modifying your browser proxy settings to your " @@ -4463,7 +4483,7 @@ msgstr "" "config.privoxy.org\">HTTP://CONFIG.PRIVOXY.ORG/ OR HTTP://P.P.\"" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" @@ -4610,7 +4630,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4802,124 +4822,180 @@ msgstr "" "lesssecureapps\" >HTTPS://WWW.GOOGLE.COM/SETTINGS/SECURITY/LESSSECUREAPPS)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Add Service" +msgid "Shares" +msgstr "ADD SERVICE" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "DOMAIN NAME" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Enable Subdomains" +msgid "Unavailable Shares" +msgstr "ENABLE SUBDOMAINS" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Kite name" msgid "Share name" msgstr "KITE NAME" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "ACTIONS" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "ADD SERVICE" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "ADD SERVICE" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Add Service" +msgid "Home Share" +msgstr "ADD SERVICE" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error enabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error disabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "WEB SERVER" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4955,8 +5031,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "CONFIGURATION UPDATED." @@ -5006,23 +5082,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "NAME" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Blocked" +msgid "Sandboxed" +msgstr "BLOCKED" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "YES" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" @@ -5434,7 +5531,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "ACTION ERROR: {0} [{1}] [{2}]" @@ -5664,11 +5761,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "PUBLISH KEY" +#| msgid "Add Service" +msgid "Share" +msgstr "ADD SERVICE" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5678,6 +5775,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "THE FOLLOWING IS THE CURRENT STATUS:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5779,7 +5884,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5787,7 +5892,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5834,11 +5939,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 #, fuzzy #| msgid "" #| "Tor is an anonymous communication system. You can learn more about it " @@ -5859,38 +5964,38 @@ msgstr "" "THE " "TOR BROWSER." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "TOR HIDDEN SERVICE" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "ACCESS URL {url} ON TCP{kind} VIA TOR" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" @@ -6190,18 +6295,18 @@ msgstr "UPGRADE PROCESS STARTED." msgid "Starting upgrade failed." msgstr "STARTING UPGRADE FAILED." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "USERS AND GROUPS" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6209,26 +6314,26 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "TRANSMISSION BITTORRENT" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6242,20 +6347,20 @@ msgstr "" "ABLE TO LOG IN TO ALL SERVICES. THEY CAN ALSO LOG IN TO THE SYSTEM THROUGH " "SSH AND HAVE ADMINISTRATIVE PRIVILEGES (SUDO)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "CREATING LDAP USER FAILED." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "FAILED TO ADD NEW USER TO {group} GROUP." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6265,39 +6370,45 @@ msgstr "" "SYSTEM WITHOUT USING A PASSWORD. YOU MAY ENTER MULTIPLE KEYS, ONE ON EACH " "LINE. BLANK LINES AND LINES STARTING WITH # WILL BE IGNORED." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "RENAMING LDAP USER FAILED." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "FAILED TO REMOVE USER FROM GROUP." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "FAILED TO ADD USER TO GROUP." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "CHANGING LDAP USER PASSWORD FAILED." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN" @@ -6318,7 +6429,7 @@ msgid "Create User" msgstr "CREATE USER" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "DELETE USER" @@ -6386,29 +6497,29 @@ msgstr "SAVE CHANGES" msgid "User %(username)s created." msgstr "USER %(username)s CREATED." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "USER %(username)s UPDATED." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "EDIT USER" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "USER {user} DELETED." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "DELETING LDAP USER FAILED." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "CHANGE PASSWORD" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." @@ -6771,13 +6882,13 @@ msgstr "LAUNCH WEB CLIENT" msgid "Client Apps" msgstr "QUASSEL IRC CLIENT" -#: plinth/views.py:181 +#: plinth/views.py:179 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "APPLICATIONS" -#: plinth/views.py:184 +#: plinth/views.py:182 #, fuzzy #| msgid "Applications" msgid "Application disabled" @@ -6787,6 +6898,17 @@ msgstr "APPLICATIONS" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "MODULE: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "MODULE: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "PUBLISH KEY" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 71bed96ce..31bca17a6 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-20 20:21+0000\n" "Last-Translator: Thomas Vincent \n" "Language-Team: French %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Le service %(service_name)s est en fonctionnement." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Écoute sur le port {listen_address}:{port} ({kind})" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Écoute sur le port {port}, type {kind}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Accès à l'URL {url} via tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Accès à l'URL {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Connexion à {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Impossible de se connecter à {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Activer l'application" @@ -110,6 +106,16 @@ msgstr "Serveur Web" msgid "{box_name} Web Interface (Plinth)" msgstr "Interface web de {box_name} (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Accès à l'URL {url} via tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Accès à l'URL {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Découverte de services" @@ -361,7 +367,7 @@ msgid "Create Location" msgstr "Créer un emplacement" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Créer un dépôt" @@ -638,8 +644,8 @@ msgstr "Activer DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Activer les extensions de sécurité DNS (DNSSEC)" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Configuration mise à jour" @@ -847,7 +853,7 @@ msgstr "Cacher les applications et les fonctionnalités avancées" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Partage de fichiers" @@ -900,19 +906,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Mise à jour du mot de passe de téléversement" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Échec de la mise à jour du mot de passe de téléversement" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Mise à jour de la taille maximale des fichiers" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Échec de la mise à jour de la taille maximale des fichiers" @@ -928,7 +934,7 @@ msgstr "" "Le serveur de temps réseau est un programme permettant de maintenir l'heure " "du système synchronisée avec les serveurs sur Internet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Synchroniser l'heure avec un serveur NTP" @@ -948,12 +954,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- pas de fuseau horaire établi --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Erreur lors de l'établissement du fuseau horaire : {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Fuseau horaire établi" @@ -1000,7 +1006,7 @@ msgstr "" "sur votre système pour confirmer que les applications et les services " "fonctionnent comme prévu." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Test de diagnostic" @@ -1019,21 +1025,19 @@ msgid "Results" msgstr "Résultats" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Module: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Résultats des diagnostics" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Module: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Ce module n'est pas compatible avec les tests de diagnostic" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1106,18 +1110,18 @@ msgstr "" msgid "Update setup" msgstr "Actualiser la configuration" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Paramètre inchangé" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "L'enregistrement des utilisateurs est activé" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "L'enregistrement des utilisateurs est désactivé" @@ -1364,7 +1368,7 @@ msgstr "" msgid "Last update" msgstr "Dernière mise à jour" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "À propos" @@ -1503,11 +1507,11 @@ msgstr "" msgid "Configuration" msgstr "Configuration" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Gestion des archives de messages activée" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Gestion des archives de messages désactivée" @@ -1527,6 +1531,25 @@ msgstr "" "feu activé et correctement configuré réduit le risque de menaces depuis " "Internet." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"%(service_name)s n'est disponible que sur les réseaux internes." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"%(service_name)s n'est disponible que sur les réseaux internes." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1631,15 +1654,15 @@ msgstr "Démarrer la configuration" msgid "Setup Complete" msgstr "Installation Achevée" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Hébergement Git simple" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1658,7 +1681,7 @@ msgstr "" "commande ou avec l'un des nombreux clients graphiques. Vous pouvez ainsi " "partager votre code avec des gens partout dans le monde." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1666,7 +1689,7 @@ msgstr "" "Pour en apprendre plus sur l'utilisation de Git, consultez ce tutoriel Git." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "Modification des dépôts Git autorisées" @@ -1761,75 +1784,75 @@ msgstr "Supprimer définitivement ce dépôt ?" msgid "Delete %(name)s" msgstr "Supprimer %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Dépôt créé." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "Une erreur est survenue pendant la création du dépôt." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Dépôt modifié." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Modifier un dépôt" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Une erreur est survenue pendant la configuration." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} supprimé." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} n'a pas abouti : {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Documentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuel" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Obtenir de l'aide" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Faire un retour d'utilisation" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Participer" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Documentation et FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "À Propos de {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Manuel {box_name}" @@ -2128,7 +2151,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Réseau d'anonymat" @@ -2181,11 +2204,11 @@ msgstr "Mandataires" msgid "Anonymous torrents" msgstr "Torrents anonymes" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "Mandataires I2P et Tunnels" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2195,7 +2218,7 @@ msgstr "" "(eepsites) de manière anonyme. Pour cela, votre navigateur, un Navigateur " "Tor de préférence, doit être configuré pour utiliser un mandataire (proxy)." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2204,11 +2227,11 @@ msgstr "" "mandataires et tunnels additionnels peuvent être configurés grâce à " "l'interface de configuration des tunnels." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Torrents anonymes" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2256,7 +2279,6 @@ msgstr "Afficher et modifier des applications wiki" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2307,32 +2329,32 @@ msgstr "" "commentaires, ainsi que l'historique des révisions. Voulez-vous supprimer ce " "wiki ou blogue de façon permanente ?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} créé." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Le wiki n'a pu être créé : {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blogue {name} créé." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Le blogue n'a pu être créé : {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "{title} supprimé." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "La suppression de {title} n'a pas abouti : {error}" @@ -2398,15 +2420,15 @@ msgstr "" msgid "JavaScript license information" msgstr "Information de licence JavaScript" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certificats" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2422,7 +2444,7 @@ msgstr "" "le propriétaire du domaine auprès de l'autorité de certification « Let's " "Encrypt »." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2485,6 +2507,7 @@ msgstr "Obtenir à nouveau" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Supprimer" @@ -2505,7 +2528,7 @@ msgstr "" "Aucun domaine n'a été configuré. Configurez des " "domaines pour pouvoir leur obtenir des certificats." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2514,30 +2537,30 @@ msgstr "" "Certificat révoqué avec succès pour le domaine {domain}. Cela peut prendre " "un moment pour prendre effet." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" "Échec de la révocation du certificat pour le domaine {domain} : {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificat obtenu avec succès pour le domaine {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Échec de l'obtention du certificat pour le domaine {domain} : {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificat supprimé avec succès pour le domaine {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2665,11 +2688,11 @@ msgstr "" " Encrypt pour en obtenir un.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Enregistrement public activé" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Enregistrement public désactivé" @@ -2754,36 +2777,36 @@ msgstr "" "Verrouille l'accès. Seul les utilisateurs avec un compte peuvent lire/écrire " "sur ce wiki. Les inscriptions publiques sont également désactivées." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Mot de passe mis à jour" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Inscriptions publiques activées" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Inscriptions publiques désactivées" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Mode privé activé" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Mode privé désactivé" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Bac à sable cubique" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2850,27 +2873,27 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Configuration du nombre maximum de joueurs mise à jour" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Configuration du mode créatif mise à jour" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Configuration PVP mise à jour" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "Serveur média simple" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2888,7 +2911,7 @@ msgstr "" "les smartphones, les télévisions et les systèmes de jeu (comme PS3 et " "Xbox360) ou les applications comme totem et Kodi." -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "Serveur de streaming de média" @@ -2906,8 +2929,8 @@ msgstr "" "Répertoire utilisé par MiniDLNA pour lire le contenu. Tous les sous-" "répertoires seront également analysés à la recherche de fichiers multimédia. " "Si vous changez le répertoire par défaut, assurez-vous que celui-ci existe " -"et que l’utilisateur \"minidlna\" puisse le lire. Tout répertoire d’" -"utilisateur (\"/home/utilisateur\") fonctionnera en général." +"et que l’utilisateur \"minidlna\" puisse le lire. Tout répertoire " +"d’utilisateur (\"/home/utilisateur\") fonctionnera en général." #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" @@ -2929,7 +2952,7 @@ msgstr "totem" msgid "Specified directory does not exist." msgstr "Le répertoire indiqué n’existe pas." -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "Répertoire multimédia mis à jour" @@ -3153,15 +3176,15 @@ msgstr "Clef publiée sur le serveur de clefs." msgid "Error occurred while publishing key." msgstr "Une erreur est survenue lors de la publication de la clef." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Chat vocal" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3169,7 +3192,7 @@ msgstr "" "Mumble est un logiciel de chat vocal de haute qualité, open source, crypté " "et à faible temps de latence." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3201,7 +3224,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "Mot de passe du super utilisateur mis à jour avec succès." @@ -3251,7 +3274,7 @@ msgstr "" "Les périphériques gérés par d'autres méthodes pourraient ne pas être " "disponibles pour être configurés ici." -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilise DNSSEC sur IPv{kind}" @@ -3507,96 +3530,96 @@ msgstr "WPA" msgid "Open" msgstr "Ouvert" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Connexions Réseau" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Impossible de montrer la connexion : connexion introuvable." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Informations sur la connexion" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Impossible de modifier la connexion : connexion introuvable." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Ce type de connexion n'est pas encore intelligible." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Modifier connexion" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Connexion {name} activée." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Échec de l'activation de la connexion : connexion introuvable." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Échec de l'activation de la connexion {name} : pas d'appareil adéquat " "disponible." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Connexion {name} désactivée." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Échec de la désactivation de la connexion : connexion introuvable." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Réseaux Wi-Fi à Proximité" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Ajouter connexion" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Ajout d'une nouvelle connexion générique" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Ajouter Nouvelle Connexion Ethernet" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Ajouter Nouvelle Connexion PPPoE" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Ajouter Nouvelle Connexion Wi-Fi" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Connexion {name} supprimée." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Échec de la suppression de la connexion : connexion introuvable." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Supprimer Connexion" @@ -3643,7 +3666,6 @@ msgid "yes" msgstr "oui" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Appareil" @@ -3949,11 +3971,11 @@ msgstr "" msgid "Download my profile" msgstr "Télécharger mon profil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Installation terminée." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Échec de l'installation." @@ -4305,15 +4327,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Éteindre Maintenant" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Serveur mandataire web" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4324,7 +4346,7 @@ msgstr "" "pages Web ou des en-têtes HTTP ainsi que de contrôler l'accès et de retirer " "les publicités ou autres éléments nuisibles de l'Internet. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4340,7 +4362,7 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org/ ou http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accéder à l'URL {url} avec le proxy {proxy} sur tcp{kind}" @@ -4505,7 +4527,7 @@ msgstr "" "https://) et votre compte-utilisateur. Cliquer sur le " "bouton de recherche listera les calendriers et carnets d'adresses existants." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Configuration des droits d'accès mise à jour" @@ -4674,11 +4696,11 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4686,96 +4708,163 @@ msgstr "" "Samba permet de partager des fichiers et des répertoires entre FreedomBox et " "d’autres machines de votre réseau local." -#: plinth/modules/samba/__init__.py:53 -#, python-brace-format +#: plinth/modules/samba/__init__.py:56 +#, fuzzy, python-brace-format +#| msgid "" +#| "After installation, you can choose which disks to use for sharing. " +#| "Enabled {hostname} shares are open to everyone in your local network and " +#| "are accessible under Network section in the file manager on your computer." msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" "Après l’installation, vous pouvez choisir quels disques utiliser pour le " "partage. Les partages {hostname} activés sont ouverts à toutes les personnes " "de votre réseau local et sont accessibles dans la section Réseau du " "gestionnaire de fichiers de votre ordinateur." -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" -msgstr "Accéder aux répertoires partagés depuis le serveur" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." +msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "Choisissez les disques à partager" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." +msgstr "" + +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Partagée" + +#: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directory will be shared on selected disks, " +#| "not the whole disk." +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." msgstr "" "Note : seuls les répertoires créés spécialement pour cela seront partagés " "sur les disques sélectionnés, pas les disques en entier." -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Étiquette" +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Nom de domaine" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Point de montage" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Utilisé" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "Les partitions formatées en VFAT ne sont pas gérées" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" -msgstr "Les partages sont configurés mais le disque n'est pas disponible" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." +msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Domaines disponibles" + +#: plinth/modules/samba/templates/samba.html:120 +#, fuzzy +#| msgid "" +#| "If the disk is plugged back in, sharing will be automatically enabled." +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." msgstr "Si le disque est rebranché, le partage sera automatiquement activé." -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "Nom du partage" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "Action" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Ajouter un partage" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Ajouter un partage" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Page d'accueil" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "Partage activé." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Erreur lors de l'activation du partage : {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 msgid "Share disabled." msgstr "Partage désactivé." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Erreur lors de la désactivation du partage : {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Recherche sur le Web" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4784,7 +4873,7 @@ msgstr "" "privée. Il rassemble et affiche les résultats de plusieurs moteurs de " "recherche." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4792,7 +4881,7 @@ msgstr "" "Searx peut être utilisé pour éviter le pistage et le profilage fait par les " "moteurs de recherche. Il ne stocke aucun cookie par défaut." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Rechercher sur le web" @@ -4827,8 +4916,8 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permettre à tous ceux qui peuvent accéder à cette application de l'utiliser." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Configuration actualisée." @@ -4881,25 +4970,52 @@ msgstr "" "connue(s)." #: plinth/modules/security/templates/security_report.html:33 +#, fuzzy +#| msgid "" +#| "The following table lists the current reported number, and historical " +#| "count, of security vulnerabilities for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "La table suivante liste le nombre de failles de sécurité actuelles et " "passées de chaque application installée." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Application" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "failles actuelles" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Anciennes failles" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Bac à sable cubique" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "oui" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Aucun" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5306,7 +5422,7 @@ msgstr "Instantané créé." msgid "Storage snapshots configuration updated" msgstr "Configuration du stockage des instantanés mise à jour" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Erreur sur action : {0} [{1}] [{2}]" @@ -5527,10 +5643,12 @@ msgid "Subdirectory (optional)" msgstr "Sous-répertoire (optionnel)" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" -msgstr "Partage samba" +#, fuzzy +#| msgid "Shared" +msgid "Share" +msgstr "Partagée" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "Autre répertoire (indiquer ci-dessous)" @@ -5538,6 +5656,14 @@ msgstr "Autre répertoire (indiquer ci-dessous)" msgid "The following storage devices are in use:" msgstr "Les media de stockage suivants sont en cours d'utilisation :" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Étiquette" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Point de montage" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Extension de la partition" @@ -5654,7 +5780,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Stockage distribué de fichiers" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5666,7 +5792,7 @@ msgstr "" "sur un réseau distribué de nœuds de stockage. Même si certains des nœuds " "échouent, vos fichiers peuvent être retrouvés depuis les nœuds restants." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5716,11 +5842,11 @@ msgstr "Introducteurs connectés" msgid "Remove" msgstr "Supprimer" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5734,36 +5860,36 @@ msgstr "" "recommande l'utilisation du navigateur Tor." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "Service Tor Onion" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Mandataire Socks Tor" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Relais pont Tor" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Port du relais Tor disponible" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Transport Obfs3 enregistré" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Transport Obfs4 enregistré" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Accédez à l'URL {url} sur tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" @@ -6053,11 +6179,11 @@ msgstr "Mise à niveau démarrée." msgid "Starting upgrade failed." msgstr "Échec du démarrage de la mise à niveau." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Utilisateurs et Groupes" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -6068,7 +6194,7 @@ msgstr "" "Certaines nécessitent en plus qu'un compte fasse partie d'un groupe pour " "autoriser l'utilisateur à accéder à l'application." -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6080,24 +6206,24 @@ msgstr "" "revanche, seuls les utilisateurs du groupe admin pourront modifier " "ces applications ou les paramètres-système." -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l'entrée LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Accès à tous les services et les configurations-système" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Le nom d'utilisateur est déjà pris ou est réservé." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Permissions" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6112,20 +6238,20 @@ msgstr "" "peuvent également se connecter au système avec Secure Shell (SSH) et se voir " "accorder le mode superutilisateur (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "La création de l'utilisateur LDAP n'a pas abouti." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Échec de l'ajout d'un nouvel utilisateur au groupe {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Clés SSH autorisées" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6136,39 +6262,45 @@ msgstr "" "clefs multiples, une sur chaque ligne. Les lignes vides et celles commençant " "par # seront ignorées." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Le changement du nom de l'utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Échec du retrait de l'utilisateur du groupe." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Échec de l'ajout de l'utilisateur au groupe." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Impossible de définir les clés SSH." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Échec de l'ajout de l'utilisateur au groupe." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Impossible de supprimer le seul administrateur de ce système." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Le changement de mot de passe pour l'utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "L'ajout du nouvel utilisateur au groupe administrateur n'a pas abouti." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Échec de la restriction de l'accès à la console." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Compte utilisateur créé, vous êtes maintenant connecté." @@ -6189,7 +6321,7 @@ msgid "Create User" msgstr "Créer Utilisateur" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Supprimer Utilisateur" @@ -6256,29 +6388,29 @@ msgstr "Sauvegarder Modifications" msgid "User %(username)s created." msgstr "Utilisateur %(username)s créé." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Utilisateur %(username)s mis à jour." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Modifier Utilisateur" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Utilisateur {user} supprimé." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "La suppression de l'utilisateur LDAP a échoué." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Changer Mot de Passe" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Mot de passe changé avec succès." @@ -6626,11 +6758,11 @@ msgstr "Lancer le client Web" msgid "Client Apps" msgstr "Applications clientes" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Application activée" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Application désactivée" @@ -6638,6 +6770,24 @@ msgstr "Application désactivée" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Module: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Module: %(module_name)s" + +#~ msgid "Access shared folders from inside the server" +#~ msgstr "Accéder aux répertoires partagés depuis le serveur" + +#~ msgid "Select disks for sharing" +#~ msgstr "Choisissez les disques à partager" + +#~ msgid "Shares configured but the disk is not available" +#~ msgstr "Les partages sont configurés mais le disque n'est pas disponible" + +#~ msgid "Samba share" +#~ msgstr "Partage samba" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 9417217e2..b19a1e524 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-07-11 08:01+0000\n" "Last-Translator: Miguel A. Bouzada \n" "Language-Team: Galician Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1540,75 +1556,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1829,7 +1845,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1874,28 +1890,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1932,7 +1948,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1980,32 +1995,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2064,15 +2079,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2082,7 +2097,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2140,6 +2155,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2158,36 +2174,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2275,11 +2291,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2345,36 +2361,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2429,27 +2445,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2460,7 +2476,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2496,7 +2512,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2691,21 +2707,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2730,7 +2746,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2771,7 +2787,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2997,94 +3013,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3131,7 +3147,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3406,11 +3421,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3717,22 +3732,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3742,7 +3757,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3868,7 +3883,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3985,114 +4000,158 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" -msgid "Error enabling share: {error_message}" -msgstr "Produciuse un erro ao instalar o aplicativo: {error}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" +msgid "Error enabling share: {error_message}" +msgstr "Produciuse un erro ao instalar o aplicativo: {error}" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, fuzzy, python-brace-format +#| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Produciuse un erro ao instalar o aplicativo: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4124,8 +4183,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4171,21 +4230,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4540,7 +4616,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4745,10 +4821,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4756,6 +4832,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4852,7 +4936,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4860,7 +4944,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4903,11 +4987,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4916,36 +5000,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5189,18 +5273,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5208,24 +5292,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5234,59 +5318,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5307,7 +5395,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5368,29 +5456,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5707,11 +5795,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index dd36dd8b0..11e7ecf41 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2018-02-05 18:37+0000\n" "Last-Translator: drashti kaushik \n" "Language-Team: Gujarati Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1699,77 +1717,77 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Documentation" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "માર્ગદર્શિકા" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1992,7 +2010,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -2039,28 +2057,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2097,7 +2115,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2145,32 +2162,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2229,15 +2246,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2247,7 +2264,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2305,6 +2322,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2323,36 +2341,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2442,11 +2460,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2518,44 +2536,44 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે." -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે." -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "Application enabled" msgid "Private mode enabled" msgstr "એપ્લિકેશન સક્ષમ કરો" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "Application disabled" msgid "Private mode disabled" msgstr "એપ્લિકેશન અક્ષમ છે" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2610,27 +2628,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2641,7 +2659,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2677,7 +2695,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2874,21 +2892,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2915,7 +2933,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2956,7 +2974,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3182,94 +3200,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3316,7 +3334,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3593,11 +3610,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3904,22 +3921,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3929,7 +3946,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4055,7 +4072,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4172,116 +4189,162 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "ક્ષેત્રનું નામ" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" +msgstr "" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "એપ્લિકેશન અક્ષમ છે" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4313,8 +4376,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4360,21 +4423,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4730,7 +4810,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "DNSSEC ગોઠવણીને સુધારેલી શરુ કરો" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4941,10 +5021,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4952,6 +5032,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5048,7 +5136,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5056,7 +5144,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5099,11 +5187,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5112,36 +5200,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5397,18 +5485,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5416,24 +5504,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5442,59 +5530,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5515,7 +5607,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5576,29 +5668,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5921,11 +6013,11 @@ msgstr "વેબ ક્લાયન્ટ શરૂ કરો" msgid "Client Apps" msgstr "બીટ ટોરેન્ટ વેબ ક્લાયન્ટ" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "એપ્લિકેશન સક્ષમ કરો" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "એપ્લિકેશન અક્ષમ છે" @@ -5933,6 +6025,12 @@ msgstr "એપ્લિકેશન અક્ષમ છે" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "વિભાગ: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "વિભાગ: %(module_name)s" + #, fuzzy #~| msgid "Last update" #~ msgid "Auto-update" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 9be5f6e81..38db108b6 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2018-08-09 20:39+0000\n" "Last-Translator: Gayathri Das \n" "Language-Team: Hindi %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "सर्विस %(service_name)s चल रहा है." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "{kind} में सुन कर पोर्ट {listen_address} :{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "{kind} में सुन कर पोर्ट{port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "इस यूआरएल का अपयोग करें {url} टीसीपी पर {kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "इस यूआरएल का अपयोग करें {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "{host}:{port} से जुड़े" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "{host}:{port} से नहीं जोड़ सखता" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "फ्रीडमबोएक्स" - #: plinth/forms.py:39 msgid "Enable application" msgstr "एप्लिकेशन सक्षम करें" @@ -109,6 +105,16 @@ msgstr "वेब सर्वर" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} वेब इंटरफेस (प्लिंथ)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "इस यूआरएल का अपयोग करें {url} टीसीपी पर {kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "इस यूआरएल का अपयोग करें {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "सर्विस डिस्कोवरि" @@ -377,7 +383,7 @@ msgid "Create Location" msgstr "कनेक्शन बनाएँ" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 #, fuzzy #| msgid "Create User" msgid "Create Repository" @@ -652,8 +658,8 @@ msgstr "डीएनएसएसईसि सक्षम करें" msgid "Enable Domain Name System Security Extensions" msgstr "डॉमेन नाम सिस्टम सुरक्षा एक्सटेंशनस सक्षम करें" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "कॉन्फ़िगरेशन अपडेट करें" @@ -865,7 +871,7 @@ msgstr "" msgid "Coquelicot" msgstr "कोकेलिकॉट" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "फ़ाइल शेयरइंग" @@ -918,19 +924,19 @@ msgstr "आधिकतम फ़ाइल आकार सेट करें, msgid "coquelicot" msgstr "कोकेलिकॉट" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "अपलोड पासवर्ड अद्यतन किया गया" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "पासवर्ड अपलोड अद्यतन नहीं किया गया था" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "अधिकतम फ़ाइल आकार अद्यतन किया गया" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "अधिकतम फ़ाइल आकार नहीं अद्यतन किया गया" @@ -945,7 +951,7 @@ msgid "" msgstr "" "नेटवर्क समय सर्वर एक प्रोग्रम है कि सिस्टम समय इंटरनेट सर्वरसॅ के सात में बनाए रखता है." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -964,12 +970,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- समय क्षेत्र सेट नहीं है --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "समय क्षेत्र सेट करने में एरर: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "समय क्षेत्र सेट" @@ -1022,7 +1028,7 @@ msgstr "" "पुष्टि करने के लिये कि एप्लिकेशन या सेवाएं अच्छेसे चल रहे है, सिस्टम निदान परिक्षा बहुत सारे " "चेकों करोगे." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "निदान परिक्षा" @@ -1041,21 +1047,19 @@ msgid "Results" msgstr "परिणाम" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "मॉड्यूल: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "निदानिकी का परिणाम" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "मॉड्यूल: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "यह मॉड्यूल निदानिकी कि नहीं समर्थन करता है" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1125,18 +1129,18 @@ msgstr "" msgid "Update setup" msgstr "सेटअप अपडेट" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "सेटिंग स्थिर है" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "यूसर पंजीकरण सक्षम किया" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "यूसर पंजीकरण अक्षम किया" @@ -1368,7 +1372,7 @@ msgstr "" msgid "Last update" msgstr "अंतिम अपडेट" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "के बारे में" @@ -1507,11 +1511,11 @@ msgstr "" msgid "Configuration" msgstr "कॉन्फ़िगरेशन" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "संदेश संग्रह प्रबंधन सक्षम किया गया है" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "संदेश संग्रह प्रबंधन अक्षम किया गया है" @@ -1530,6 +1534,23 @@ msgstr "" "को नियंत्रित करता है. फ़ायरवॉल सक्षम और ठीक से कॉंफ़िगर रखते हुए इंटरनेट से सुरक्षा खतरे का " "जोखिम कम कर देता है." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "%(service_name)s सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "%(service_name)s सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1634,15 +1655,15 @@ msgstr "सटअप शुरु करें" msgid "Setup Complete" msgstr "सेटअप पूरा हो गया" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1653,13 +1674,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1780,79 +1801,79 @@ msgstr "इस स्नैपशॉट को स्थाई रूप से msgid "Delete %(name)s" msgstr "%(name)s हटाईये" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} हटा गया है." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "प्रलेखन" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "मैन्युअल" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "प्रलेखन और एफ़एक्यू" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} के बारे में" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} मैनुअल" @@ -2106,7 +2127,7 @@ msgstr "बग रिपोर्ट सबमिट करने से पह msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "गुमनामी नेटवर्क" @@ -2161,28 +2182,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2234,7 +2255,6 @@ msgstr "विकी एप्लिकेशन को देखें और #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "टाइप" @@ -2284,33 +2304,33 @@ msgstr "" "यह कार्य सब पोस्ट, पेज और टिप्पणियां निकाल देगी, संशोधन इतिहास भी. यह ब्लॉग और विकी " "हमेशा से हटा करें?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "विकी बनाया है {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "विकी नहीं बना सकता है:{error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "ब्लॉग बनाया है {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "ब्लॉग नहीं बना सकता है: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} हटा गया है." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2375,15 +2395,15 @@ msgstr "" msgid "JavaScript license information" msgstr "जावास्क्रिप्ट लाइसेंस जानकारी" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "लेटस एंक्रिप्ट" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "प्रमाण पत्र" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2397,7 +2417,7 @@ msgstr "" "प्रमाणपत्र सेटअप प्राप्त कर सकता है. {box_name} यह लेटस एंक्रिप्ट का डोमेन का एकमात्र " "मालिक सताबित करके एेसा करता है." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2459,6 +2479,7 @@ msgstr "री-ओबटैन" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "हटाईये" @@ -2482,7 +2503,7 @@ msgstr "" "कोई डोमेन कॉंफ़िगर नहीं किया गया है. डोमेन कॉंफ़िगर करें उंहें के लिए प्रमाणपत्र प्राप्त करने के " "लिये." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2491,29 +2512,29 @@ msgstr "" "डोमेन पर प्रमाणपत्र कामयाबी सेवापस ले लिया गया{domain}. यह कुछ समय को प्रभावी करने के " "लिए ले सकता है." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "डोमेन पर प्रमाणपत्र कामयाबी से वापस नहीं ले लिया गया{domain}:{error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से प्राप्त किया {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से नहीं प्राप्त किया {domain}:{error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से हटाया गया {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}" @@ -2624,11 +2645,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "सार्वजनिक रजिस्टरेशिन सक्षम किया गया" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "सार्वजनिक रजिस्टरेशिन अक्षम किया गया" @@ -2708,36 +2729,36 @@ msgstr "" "अगर सक्षम है, प्रवेश प्रतिबंधित किया जाएगा. सिर्फ जो लोग जिनके पास अकाउंट है वो लोग " "विकी को पढ़/लिक सकते हैं. सार्वजनिक रेगीसट्रेशिन भी अक्षम कर दिए जाएंगे." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "पासवर्ड अपडेट" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "सार्वजनिक रेगीसट्रेशिन सक्षम किया" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "सार्वजनिक रेगीसट्रेशिन अक्षम किया" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "निजी मोड सक्षम किया" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "निजी मोड सक्षम किया" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2797,27 +2818,27 @@ msgstr "ऍड्रेस" msgid "Port" msgstr "पोर्ट" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "अधिकतम खिलाड़ी कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "क्रिएटिव मोड कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "पिवीपि कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "क्षति कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2828,7 +2849,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2864,7 +2885,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3084,21 +3105,21 @@ msgstr "चाबी किसर्वर पर प्रकाशित क msgid "Error occurred while publishing key." msgstr "चाबी प्रकाशित करते समय एरर हो गया." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "वॉयस चैट" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "ममबल एक खुला सोरस, कम विलंबता, एन्क्रिप्टेड अच्छा गुणवत्ता आवाज चैट सॉफ्टवेयर है." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3128,7 +3149,7 @@ msgstr "पलमबल" msgid "Mumblefly" msgstr "ममबलफ्लाई" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3171,7 +3192,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है{kind}" @@ -3420,94 +3441,94 @@ msgstr "WPA" msgid "Open" msgstr "खुला" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "नेटवर्क कनेक्शन्स" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "कनेक्शन नहीं दिखा सकता: कनेक्शन से नहीं मिला." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "कनेक्शन के बारे में जानकारी" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "कनेक्शन नहीं संपादित कर सकता: कनेक्शन से नहीं मिला." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "इस प्रकार का कनेक्शन अभी समझ में नहीं आता." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "कनेक्शन संपादित करें" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "कनेक्शन सक्रिय है {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "कनेक्शन सक्रिय करने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "कनेक्शन सक्रिय करने में विफल {name}: कोई उपयुक्त डिवाइस उपलब्ध नहीं है." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "निष्क्रिय कनेक्शन {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "कनेक्शन को निष्क्रिय करने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "पास के वाई-फाई नेटवर्क" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "कनेक्शन जोड़ें" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "नया जेनेरिक कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "नया ईथरनेट कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "नया PPPoE कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "नया वाई-फाई कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "कनेक्शन {name} हटाया गया." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "कनेक्शन हटाने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "कनेक्शन हटाएँ" @@ -3554,7 +3575,6 @@ msgid "yes" msgstr "हाँ" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "यंत्र" @@ -3864,11 +3884,11 @@ msgstr "प्रोफ़ाइल हर %(box_name)s यूसर के ल msgid "Download my profile" msgstr "मेरी प्रोफ़ाइल डाउनलोड करें" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "सेटअप पूरा हो गया." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "सेटअप विफल." @@ -4221,15 +4241,15 @@ msgstr "" msgid "Shut Down Now" msgstr "अब शट डाउन करें" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "प्रिवोक्सी" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "वेब प्रॉक्सी" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4239,7 +4259,7 @@ msgstr "" "लिए, वेब पेज डेटा और HTTP हेडर को मोडिफाई करने के लिए, ऐकसेस को नियंत्रित करने के लिए " "और एड या दुसरा इंटरनेट का जंक हटाने के लिए. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4253,7 +4273,7 @@ msgstr "" "कॉन्फ़िगरेशन विवरण और प्रलेखन यहां देख सकते हैं http://config.privoxy.org/ या http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर {proxy} टीसीपी पर{kind}" @@ -4415,7 +4435,7 @@ msgstr "" "(जैसे http://localhost:5232) और अपने यूसरनाम दर्ज करें. खोज बटन पर क्लिक करने से मौजूदा " "कैलेंडर और पता पुस्तिकाएं सूचीबद्ध होंगी." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "ऐकसेस अधिकार कॉंफ़िगरेशन अपडेट किया गया" @@ -4582,110 +4602,166 @@ msgstr "" "security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "लेबल" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "साझा किया गया" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "डोमेन नाम" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "माउन्ट प्वाइंट" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "उपयोग किया गया" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "उपलब्ध वाले डोमेन्स" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "शेयर जोड़ा गया." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "एक्सआयन" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "शेयर जोड़ें" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "शेयर जोड़ें" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "होमपेज" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "शेयर हटाया गया." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "शेयर संपादित किया गया." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "सिरएक्स" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "वेब खोज" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4693,7 +4769,7 @@ msgstr "" "सिरएक्स एक गोपनीयता संमान इंटरनेट मेटा खोज इंजन है. यह विभिन्न खोज यन्त्र से परिणाम " "इकट्ठा और प्रदर्शन करता है." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4701,7 +4777,7 @@ msgstr "" "सिरएक्स खोज इंजन द्वारा ट्रैकिंग और प्रोफाइलिंग से बचने के लिए इस्तेमाल किया जा सकता है. " "यह डिफ़ॉल्ट से कोई कुकीज़ स्टोर नहीं करता है." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "वेब सरच किजिये" @@ -4733,8 +4809,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "कॉन्फ़िगरेशन अपडेट किया." @@ -4788,23 +4864,46 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "नाम" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "ब्लॉक सेंडबोक्स" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "हाँ" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "कोई नहीं" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5202,7 +5301,7 @@ msgstr "स्नैपशॉट बनाया गया है." msgid "Storage snapshots configuration updated" msgstr "स्टोरेज स्नैपशॉट कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "क्रिया त्रुटि: {0} [{1}] [{2}]" @@ -5429,11 +5528,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "चाबी प्रकाशित करें" +#| msgid "Shared" +msgid "Share" +msgstr "साझा किया गया" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5443,6 +5542,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "निम्नलिखित डिस्कस उपयोग में है:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "लेबल" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "माउन्ट प्वाइंट" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "पारटिशन एक्सपांसन" @@ -5554,7 +5661,7 @@ msgstr "टाहो-एलएएफएस" msgid "Distributed File Storage" msgstr "फ़ाइल स्टोरेज वितरित" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5565,7 +5672,7 @@ msgstr "" "नेटवर्क पर फ़ाइलें स्टोर करने के लिये स्वतंत्र सुरक्षा का उपयोग करता है. अगर कुछ नोड्स विफल " "होगा, आपकी फ़ाइलें शेष नोड्स से पुनर्प्राप्त किया जा सकता है." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5614,11 +5721,11 @@ msgstr "कनेक्टेड इंट्रोड्यूसरस" msgid "Remove" msgstr "निकालें" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "टोर" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5631,38 +5738,38 @@ msgstr "" "टो प्रोजेक्ट सिफारिश की है कि आप टो ब्राउज़र उपयोग करें." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "टोर हिडन सर्विस" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "टोर सोक्स प्रॉक्सी" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" @@ -5966,18 +6073,18 @@ msgstr "अपग्रेड प्रक्रिया शुरू हुई msgid "Starting upgrade failed." msgstr "अपग्रेड प्रारंभ करना विफल रहा." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "यूसरस और समूह" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5985,24 +6092,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "यूसरनाम लिया है या आरक्षित है." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "अनुमतियाँ" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6015,20 +6122,20 @@ msgstr "" "

एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी " "सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "एलडीएपी यूसर बनाना विफल रहा." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "{group} समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6038,39 +6145,45 @@ msgstr "" "बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक " "एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "समूह से यूसर को हटाने में विफल." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "एसएसएच कीज़ सेट करने में असमर्थ." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "समूह से यूसर को जोड़ने में विफल." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं" @@ -6091,7 +6204,7 @@ msgid "Create User" msgstr "यूसर बनाये" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "यूसर हटाइये" @@ -6157,29 +6270,29 @@ msgstr "बदलाव संचयित कीजिये" msgid "User %(username)s created." msgstr "युसर %(username)s बनाया." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "युसर %(username)s अपडेट किया." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "यूसर संपादित करें" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "यूसर {user} हटाया." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "एलडीएपी यूसरको हटाने में असफल रहा." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "पासवर्ड बदलिये" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." @@ -6514,11 +6627,11 @@ msgstr "वेब क्लाइंट लॉंच" msgid "Client Apps" msgstr "क्लाइंट ऐप्स" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "एप्लीकेशन सक्षम किया गया है" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "एप्लीकेशन अक्षम किया गया है" @@ -6526,6 +6639,17 @@ msgstr "एप्लीकेशन अक्षम किया गया ह msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "मॉड्यूल: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "मॉड्यूल: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "चाबी प्रकाशित करें" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 0699710bb..65f6e98a8 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-26 13:21+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "A szolgáltatás fut (%(service_name)s)." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Figyelés {kind} porton: {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Figyelés {kind} porton: {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on keresztül" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Hozzáférés a {url} URL-hez" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Csatlakozás ide: {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Nem tudok ide csatlakozni: {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Alkalmazás engedélyezése" @@ -110,6 +106,16 @@ msgstr "Webszerver" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Webes felület (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on keresztül" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Hozzáférés a {url} URL-hez" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Szolgáltatásfelderítés" @@ -360,7 +366,7 @@ msgid "Create Location" msgstr "Hely létrehozása" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Tároló létrehozása" @@ -636,8 +642,8 @@ msgstr "DNSSEC engedélyezése" msgid "Enable Domain Name System Security Extensions" msgstr "Domain Name System Security Extensions engedélyezése" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "A beállítások frissültek" @@ -839,7 +845,7 @@ msgstr "Haladó szintű alkalmazások és funkciók elrejtése" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Fájlmegosztás" @@ -892,19 +898,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Feltöltési jelszó frissítve" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Feltöltési jelszó frissítése sikertelen" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Maximális fájlméret frissítve" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Maximális fájlméret frissítése sikertelen" @@ -920,7 +926,7 @@ msgstr "" "A hálózati időkiszolgáló egy olyan program, amely karbantartja a rendszeridő " "szinkronizációját az Interneten lévő kiszolgálókéval." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Az idő szinkronizálva van az NTP kiszolgálóhoz" @@ -940,12 +946,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- nincs időzóna beállítva --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Hiba az időzóna beállítása során: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Időzóna beállítva" @@ -992,7 +998,7 @@ msgstr "" "annak megerősítésére, hogy az alkalmazások és a szolgáltatások az elvárt " "módon működnek." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Ellenőrző tesz" @@ -1011,21 +1017,19 @@ msgid "Results" msgstr "Eredmények" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Modul: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Az ellenőrzés eredménye" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Modul: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "A modul nem támogatja a hibaellenőrzést" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1098,18 +1102,18 @@ msgstr "" msgid "Update setup" msgstr "Beállítások frissítése" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "A beállítás változatlan" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Felhasználók regisztrációja engedélyezve" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Felhasználók regisztrációja letiltva" @@ -1354,7 +1358,7 @@ msgstr "" msgid "Last update" msgstr "Legutolsó frissítés" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Leírás" @@ -1493,11 +1497,11 @@ msgstr "" msgid "Configuration" msgstr "Beállítások" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Üzenetarchívum kezelése engedélyezve" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Üzenetarchívum kezelése letiltva" @@ -1516,6 +1520,27 @@ msgstr "" "hálózati forgalmát felügyeli. A folyamatosan aktív és megfelelően beállított " "tűzfal csökkenti az internetről leselkedő biztonsági fenyegetések kockázatát." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"%(service_name)s néven futó szolgáltatás csak belső hálózaton " +"elérhető." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"%(service_name)s néven futó szolgáltatás csak belső hálózaton " +"elérhető." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1620,15 +1645,15 @@ msgstr "Beállítás elkezdése" msgid "Setup Complete" msgstr "Beállítás kész" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Egyszerű Git hoszting" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1646,16 +1671,16 @@ msgstr "" "parancssoros Git klienssel vagy a többféle grafikus kliensek valamelyikével. " "És megoszthatod a kódodat az emberekkel szerte a világon." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" "Ha szeretnél többet megtudni a Git használatáról, akkor tekintsd meg a Git gyorstalpalót " -"(angolul)." +"href=\"https://git-scm.com/docs/gittutorial\">Git gyorstalpalót (angolul)." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1759,77 +1784,77 @@ msgstr "Véglegesen törlöd ezt a tárolót?" msgid "Delete %(name)s" msgstr "%(name)s törlése" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Tároló létrehozva." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Hiba történt a beállítás közben." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Tároló szerkesztve." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Hiba történt a beállítás közben." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} törölve." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentáció" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kézikönyv" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Támogatás kérése" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Visszajelzés küldése" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Hozzájárulás" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentáció és GYIK" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "A {box_name} projektről" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} kézikönyv" @@ -2097,7 +2122,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonim hálózat" @@ -2152,11 +2177,11 @@ msgstr "Proxyk" msgid "Anonymous torrents" msgstr "Anonim torrentek" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P Proxyk és átjárók" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2166,7 +2191,7 @@ msgstr "" "szolgáltatásokat (eepsites). Ehhez a böngészőben, lehetőleg a Tor-" "böngészőben, be kell állítani a proxy-t." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2174,11 +2199,11 @@ msgstr "" "Alapértelmezés szerint a HTTP-, HTTPS- és IRC proxyk érhetőek el. További " "proxyk és átjárók is beállíthatók az átjáró beállítási felületén." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonim Torrentek" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2235,7 +2260,6 @@ msgstr "Wiki alkalmazások megtekintése és szerkesztése" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Típus" @@ -2285,33 +2309,33 @@ msgstr "" "Ez a művelet el fog távolítani minden bejegyzést, oldalt és kommentet " "beleértve a verziótörténetet is. Véglegesen törlöd ezt a wiki-t vagy blogot?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} wiki létrehozva." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Nem tudtam létrehozni a wiki-t: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "{name} blog létrehozva." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Nem tudtam létrehozni a blog-ot: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} törölve." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2380,15 +2404,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript licencinformáció" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Tanúsítványok" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2404,7 +2428,7 @@ msgstr "" "Teszi ezt oly módon, hogy bizonyítja a Let's Encrypt hitelesítésszolgáltató " "(CA) számára a domain tulajdonjogát." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2467,6 +2491,7 @@ msgstr "Újra beszerezni" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Törlés" @@ -2487,7 +2512,7 @@ msgstr "" "Nincsenek domain-ek beállítva. Előbb állítsd be a " "domain-eket ahhoz, hogy tanúsítványokat kaphass azokhoz." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2496,29 +2521,29 @@ msgstr "" "A {domain} domain tanúsítványa sikeresen visszavonva. Eltarthat néhány " "pillanatig, mire életbe lép." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "A {domain} domain tanúsítványát nem sikerült visszavonni: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "A {domain} domain sikeresen megkapta a tanúsítványt" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "A {domain} domain nem kapott tanúsítványt: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} domain-on a tanúsítvány sikeresen törölve" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} domain-on nem sikerült kitörölni a tanúsítványt: {error}" @@ -2645,11 +2670,11 @@ msgstr "" " Encrypt weboldalát ahhoz, hogy beszerezz egyet.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Szabad regisztráció engedélyezve" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Szabad regisztráció letiltva" @@ -2734,36 +2759,36 @@ msgstr "" "rendelkező emberek fogják tudni olvasni/írni a wiki-t. A szabad regisztráció " "is le lesz tiltva." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Jelszó frissítve" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Szabad regisztráció engedélyezve" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Szabad regisztráció letiltva" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Privát mód engedélyezve" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Privát mód letiltva" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Blokk sandbox" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2828,27 +2853,27 @@ msgstr "Cím" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Maximális játékosszám beállítás frissítve" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Kreatív mód beállítás frissítve" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "PVP beállítás frissítve" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Sérülés beállítás frissítve" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2859,7 +2884,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2895,7 +2920,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3119,15 +3144,15 @@ msgstr "Kulcs közzétéve a kulcskiszolgálónak." msgid "Error occurred while publishing key." msgstr "Hiba történt a kulcs közzététele során." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Audiókonferencia" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3135,7 +3160,7 @@ msgstr "" "A Mumble egy nyílt forráskódú, alacsony késéssel működő, titkosított, magas " "hangminőségű audiokonferencia szoftver." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3165,7 +3190,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3219,7 +3244,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC használata IPv{kind} felett" @@ -3475,96 +3500,96 @@ msgstr "WPA" msgid "Open" msgstr "Nyílt" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Hálózati kapcsolatok" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Nem jeleníthető meg a kapcsolat, mivel az nem található." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Információ a kapcsolatról" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "A kapcsolat nem szerkeszthető, mivel az nem található." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Az ilyen típusú kapcsolat még nem ismert." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Kapcsolat szerkesztése" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "{name} kapcsolat aktiválva." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Kapcsolat aktiválása sikertelen: kapcsolat nem található." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "{name} kapcsolat aktiválása sikertelen: nem áll rendelkezésre megfelelő " "eszköz." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "{name} kapcsolat deaktiválva." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Kapcsolat deaktiválása sikertelen: kapcsolat nem található." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi hálózatok a közelben" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Kapcsolat hozzáadása" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Új általános kapcsolat hozzáadása" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Új Ethernet kapcsolat hozzáadása" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Új PPPoE kapcsolat hozzáadása" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Új Wi-Fi kapcsolat hozzáadása" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Kapcsolat törölve: {name}." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "A kapcsolat törlése sikertelen, mivel az nem található." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Kapcsolat törlése" @@ -3611,7 +3636,6 @@ msgid "yes" msgstr "igen" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Eszköz" @@ -3928,11 +3952,11 @@ msgstr "" msgid "Download my profile" msgstr "Saját profilom letöltése" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Beállítás sikerült." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Beállítás sikertelen." @@ -4292,15 +4316,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Leállítás most" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Web proxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4311,7 +4335,7 @@ msgstr "" "Módosítja a weboldal adatait és HTTP fejléceket, szabályozza a hozzáférést, " "eltávolítja a hirdetéseket és az egyéb nem kívánt internetes szemetet. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4326,7 +4350,7 @@ msgstr "" "a címeken: http://config.privoxy.org/ és http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4488,7 +4512,7 @@ msgstr "" "és a felhasználónevet. A keresés gombra kattintva ki lesz listázva az összes " "elérhető naptár és címjegyzék." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Hozzáférési jogok beállításai frissítve" @@ -4666,112 +4690,166 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Válaszd ki a lemezt vagy partíciót" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Címke" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Megosztott" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domain név" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Csatolási pont" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Felhasznált" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Elérhető Domainek" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Megosztás hozzáadva." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Műveletek" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Megosztás hozzáadása" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Megosztás hozzáadása" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Honlap" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Megosztás törölve." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Megosztás szerkesztve." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Webes keresés" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4779,7 +4857,7 @@ msgstr "" "A Searx egy magánszférát tiszteletben tartó internetes metakereső. Több " "keresőmotor eredményeit gyűjti össze és jeleníti meg." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4787,7 +4865,7 @@ msgstr "" "A Searx segítségével elkerülhető, hogy a keresőmotorok nyomon kövessék és " "profilozzák a felhasználót. Sütiket eleve nem tárol." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Keresés a weben" @@ -4822,8 +4900,8 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Engedélyezi ennek az alkalmazásnak a használatát bárkinek, aki el tudja érni." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Beállítások frissítve." @@ -4885,27 +4963,50 @@ msgstr "" #| "for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "Az alábbi táblázat felsorolja az egyes telepített alkalmazások bejelentett " "biztonsági réseinek számát." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Alkalmazás neve" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 #, fuzzy #| msgid "Show security vulnerabilities" msgid "Current Vulnerabilities" msgstr "Biztonsági rések megjelenítése" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 #, fuzzy #| msgid "Show security vulnerabilities" msgid "Past Vulnerabilities" msgstr "Biztonsági rések megjelenítése" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Blokk sandbox" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "igen" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Nincs" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5319,7 +5420,7 @@ msgstr "Pillanatkép létrehozva." msgid "Storage snapshots configuration updated" msgstr "Tárolási pillanatképek konfigurációja frissítve" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Hiba a művelet közben: {0} [{1}] [{2}]" @@ -5553,11 +5654,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Public share" -msgid "Samba share" -msgstr "Nyilvános megosztás" +#| msgid "Shared" +msgid "Share" +msgstr "Megosztott" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5565,6 +5666,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "A következő tárolóeszközök vannak használatban:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Címke" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Csatolási pont" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partíció kibővítése" @@ -5681,7 +5790,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Elosztott fájltároló" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5693,7 +5802,7 @@ msgstr "" "elosztott hálózatán keresztül. Még ha néhány csomópont meg is hibásodik, a " "fájljaidat le tudod tölteni a fennmaradó csomópontokról." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5744,11 +5853,11 @@ msgstr "Csatlakozott bevezetők" msgid "Remove" msgstr "Eltávolít" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5762,38 +5871,38 @@ msgstr "" "torproject.org/download/download-easy.html.en\">Tor böngésző használatát " "javasolja." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor rejtett szolgáltatás" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on Tor használatával" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Hagyd jóvá a Tor használatát {url} célcímhez tcp{kind} protokollon" @@ -6098,18 +6207,18 @@ msgstr "A frissítési folyamat elkezdődött." msgid "Starting upgrade failed." msgstr "A frissítést nem sikerült elindítani." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Felhasználók és csoportok" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6117,24 +6226,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "A felhasználói név (már) foglalt." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Engedélyek" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6150,20 +6259,20 @@ msgstr "" "képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal " "rendelkeznek (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "LDAP felhasználó létrehozása sikertelen." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nem sikerült hozzáadni az új felhasználót ehhez a csoporthoz: {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Engedélyezett SSH kulcsok" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6173,39 +6282,45 @@ msgstr "" "jelszó nélkül jelentkezzen be. Több kulcs is megadható; soronként egy. Az " "üres, illetve # jellel kezdődő sorok nem számítanak." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "LDAP felhasználó átnevezése sikertelen." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Nem sikerült eltávolítani a felhasználót a csoportból." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "SSH kulcsok beállítása sikertelen." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "LDAP felhasználó jelszavának megváltoztatása sikertelen." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Nem sikerült hozzáadni az új felhasználót a rendszergazda csoporthoz." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Nem sikerült a konzol hozzáférés korlátozása." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres" @@ -6226,7 +6341,7 @@ msgid "Create User" msgstr "Felhasználó létrehozása" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Felhasználó törlése" @@ -6293,29 +6408,29 @@ msgstr "Változtatások mentése" msgid "User %(username)s created." msgstr "%(username)s nevű felhasználó létrehozva." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "%(username)s nevű felhasználó frissítve." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Felhasználó szerkesztése" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "{user} nevű felhasználó törölve." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "LDAP felhasználó törlése sikertelen." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Jelszómódosítás" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." @@ -6661,11 +6776,11 @@ msgstr "Webes kliens indítása" msgid "Client Apps" msgstr "Kliens alkalmazások" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Alkalmazás engedélyezve" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Alkalmazás letiltva" @@ -6673,6 +6788,22 @@ msgstr "Alkalmazás letiltva" msgid "Gujarati" msgstr "Gudzsaráti" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Válaszd ki a lemezt vagy partíciót" + +#, fuzzy +#~| msgid "Public share" +#~ msgid "Samba share" +#~ msgstr "Nyilvános megosztás" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index b195e3593..71e96c966 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1620,77 +1638,77 @@ msgstr "" msgid "Delete %(name)s" msgstr "Hapus %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Actions" msgid "Edit repository" msgstr "Aksi" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} dihapus." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Panduan" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentasi dan Tanya Jawab" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Tentang {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Panduan {box_name}" @@ -1919,7 +1937,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" @@ -1970,28 +1988,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2034,7 +2052,6 @@ msgstr "Layanan dan Aplikasi" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipe" @@ -2082,33 +2099,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Membuat wiki {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Tidak dapat membuat wiki: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "membuat blog {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Tidak dapat membuat blog: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} dihapus." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2170,17 +2187,17 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 #, fuzzy #| msgid "No certficate" msgid "Certificates" msgstr "Tidak ada Sertifikat" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2190,7 +2207,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2252,6 +2269,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Hapus" @@ -2270,36 +2288,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2389,11 +2407,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2467,44 +2485,44 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Kata Sandi" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "Aplikasi telah terpasang." -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "Aplikasi telah terpasang." -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "Application installed." msgid "Private mode disabled" msgstr "Aplikasi telah terpasang." -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2565,27 +2583,27 @@ msgstr "Address" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2596,7 +2614,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2632,7 +2650,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2833,23 +2851,23 @@ msgstr "Publikasikan kunci ke keyserver." msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Pesan Suara (Mumble)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2876,7 +2894,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2917,7 +2935,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gunakan DNSSEC pada IPv{kind}" @@ -3147,95 +3165,95 @@ msgstr "WPA" msgid "Open" msgstr "Open" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 #, fuzzy msgid "Network Connections" msgstr "Network Connections" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Sunting Koneksi" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Jaringan Wi-Fi terdekat" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Tambah Koneksi" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Hapus Koneksi" @@ -3282,7 +3300,6 @@ msgid "yes" msgstr "ya" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Perangkat" @@ -3563,11 +3580,11 @@ msgstr "" msgid "Download my profile" msgstr "Unduh profil saya" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Pengaturan selesai." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Pengaturan gagal." @@ -3880,24 +3897,24 @@ msgstr "" msgid "Shut Down Now" msgstr "Matikan Sekarang" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 #, fuzzy #| msgid "Web Proxy (Privoxy)" msgid "Web Proxy" msgstr "Web Proxy (Privoxy)" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3907,7 +3924,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4035,7 +4052,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4154,124 +4171,180 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Shared" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Name" +msgid "Disk Name" +msgstr "Nama" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Mount Point" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Digunakan" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Domain yang Tersedia" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Shared" msgid "Share name" msgstr "Shared" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Aksi" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "Tambah Layanan" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "Tambah Layanan" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Add Service" +msgid "Home Share" +msgstr "Tambah Layanan" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} dihapus." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "Shared" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Server Web" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4307,8 +4380,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4354,23 +4427,42 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Nama" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "ya" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4759,7 +4851,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "Konfigurasi Umum" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4982,11 +5074,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "Publikasikan Kunci" +#| msgid "Shared" +msgid "Share" +msgstr "Shared" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4994,6 +5086,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Mount Point" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5090,7 +5190,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5098,7 +5198,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5145,11 +5245,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5158,36 +5258,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5443,18 +5543,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5462,24 +5562,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5488,59 +5588,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Gagal membuat pengguna LDAP." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add new user to admin group." +msgid "Failed to change user status." +msgstr "Gagal menambahkan pengguna baru ke kelompok admin." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5561,7 +5667,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5624,29 +5730,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5975,11 +6081,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" @@ -5987,6 +6093,17 @@ msgstr "" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "Publikasikan Kunci" + #~ msgid "Enable PageKite" #~ msgstr "Aktifkan PageKite" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index d860740c9..4439ff9e7 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-09-03 21:24+0000\n" "Last-Translator: Swann Martinet \n" "Language-Team: Italian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1781,79 +1800,79 @@ msgstr "Rimuovere l'archivio in modo definitivo?" msgid "Delete %(name)s" msgstr "Cancella %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "Error occurred while publishing key." msgid "An error occurred while creating the repository." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "Crea Connessione" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} cancellato." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Documentazione" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuale" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "FAQ e documentazione" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, fuzzy, python-brace-format msgid "About {box_name}" msgstr "Sul {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Manuale {box_name}" @@ -2116,7 +2135,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -2168,28 +2187,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2236,7 +2255,6 @@ msgstr "Vedi e modifica le applicazioni wiki" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipo" @@ -2286,33 +2304,33 @@ msgstr "" "Quest'azione cancellerà tutti i post, le pagine e i commenti, incluse le " "revisione storiche. Cancellare questo wiki o blog permanentente?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Creato wiki {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, fuzzy, python-brace-format msgid "Could not create wiki: {error}" msgstr "Non è stato possibile creare l'wiki:{error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Creato blog {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Non è stato possibile creare il blog: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} cancellato." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2381,15 +2399,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certificati" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2404,7 +2422,7 @@ msgstr "" "disposizione. Ci riesce provando esso stesso di essere il proprietario del " "dominio a Let's Encrypt, un'autorità di certificazione (CA)." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2468,6 +2486,7 @@ msgstr "Riottieni" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Cancella" @@ -2488,7 +2507,7 @@ msgstr "" "Non è stato configurato nessun dominio. Configurante uno per poter ottenere " "dei certificati" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2497,29 +2516,29 @@ msgstr "" "Certificato revocato correttamente per il dominio {domain}. Ciò può " "richiedere alcuni minuti per avere effetto." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Revoca certificato fallita per il dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificato correttamente ottenuto per il dominio {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Rilascio certificato fallito per il dominio {domain}:{error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificato cancellato correttamente per il dominio {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" @@ -2633,11 +2652,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Registrazione pubblica abilitata" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Registrazione pubblica disabilitata" @@ -2727,36 +2746,36 @@ msgstr "" "potranno scrivere/leggere nel wiki. Inoltre saranno disabilitate le " "registrazioni pubbliche." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Password aggiornata" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Block Sandbox" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2824,28 +2843,28 @@ msgstr "Indirizzo" msgid "Port" msgstr "Porta" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Configurazione \"numero massimo giocatori\" aggiornata" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Configurazione \"Modalità creativa\" aggiornata" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Configurazione PVP aggiornata" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy msgid "Damage configuration updated" msgstr "Configurazione \"danni\" abilitata" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2856,7 +2875,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2892,7 +2911,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3103,15 +3122,15 @@ msgstr "Chiave pubblicata nel keyserver." msgid "Error occurred while publishing key." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3119,7 +3138,7 @@ msgstr "" "Mumble è un software di chat vocale ad alta qualità, a bassa latenza, " "cifrato e open source." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3147,7 +3166,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -3188,7 +3207,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilizzo DNSSEC su IPv{kind}" @@ -3443,96 +3462,96 @@ msgstr "WPA" msgid "Open" msgstr "Aperta" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Connessione di rete" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Non è possibile mostrare la connessione: Connessione non trovata." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Informazioni Connessione" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Impossibile modificare la connessione: connessione non trovata." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Questo tipo di connessione non è ancora riconosciuto." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Modifica Concessione" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Attivata connessione {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Attivazione connessione fallita: connessione non trovata." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Attivazione connessione {name} fallita: non è disponibile nessun dispositivo " "idoneo." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Disattivata connessione {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Disattivazione connessione fallita: connessione non trovata." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Reti WiFi vicine" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Aggiungi Connessione" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Aggiungendo Nuova Connessione Generica" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Aggiungendo Nuova Connessione Ethernet" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Aggiungendo Nuova Connessione PPPoE" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Aggiungendo Nuova Connessione WiFi" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Connessione {name} cancellata." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Cancellazione connessione fallita: connessione non trovata." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Cancella Connessione" @@ -3579,7 +3598,6 @@ msgid "yes" msgstr "si" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Dispositivo" @@ -3895,11 +3913,11 @@ msgstr "" msgid "Download my profile" msgstr "Scarica il mio profilo" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Setup completato." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Setup fallito." @@ -4262,15 +4280,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Spegni Ora" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4281,7 +4299,7 @@ msgstr "" "header HTTP, controllando gli accessi, rimuovendo pubblicità e altra odiosa " "spazzatura dell'Internet. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4296,7 +4314,7 @@ msgstr "" "documentazione su http://config." "Privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" @@ -4447,7 +4465,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4564,120 +4582,174 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Condiviso" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Nome dominio" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Domini disponibili" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Kite name" msgid "Share name" msgstr "Nome Kite" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Azioni" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Shared" +msgid "Open Share" +msgstr "Condiviso" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Shared" +msgid "Home Share" +msgstr "Condiviso" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "PageKite enabled" msgid "Share enabled." msgstr "PageKite abilitato" -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "PageKite disabled" msgid "Share disabled." msgstr "PageKite disabilitato" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4709,8 +4781,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4760,23 +4832,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Nome" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Block Sandbox" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "si" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5133,7 +5226,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -5345,11 +5438,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "Importa chiave" +#| msgid "Shared" +msgid "Share" +msgstr "Condiviso" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5357,6 +5450,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5453,7 +5554,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5461,7 +5562,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5504,11 +5605,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5517,36 +5618,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5799,18 +5900,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5818,24 +5919,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5844,59 +5945,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5917,7 +6022,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5978,29 +6083,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -6317,11 +6422,11 @@ msgstr "Avvia client web" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Applicazione abilitata" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Applicazione disabilitata" @@ -6329,8 +6434,16 @@ msgstr "Applicazione disabilitata" msgid "Gujarati" msgstr "" -#~ msgid "OpenVPN server is running" -#~ msgstr "Il server OpenVPN è in esecuzione" +#~ msgid "Module: %(module)s" +#~ msgstr "Modulo: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modulo: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "Importa chiave" #~ msgid "OpenVPN server is not running" #~ msgstr "Il server OpenVPN non è in esecuzione" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 9181dfade..3777b83f7 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,40 +22,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -107,6 +102,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -337,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -583,8 +588,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -757,7 +762,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -798,19 +803,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -824,7 +829,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -842,12 +847,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -889,7 +894,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -908,21 +913,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -985,18 +986,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1190,7 +1191,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1307,11 +1308,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1327,6 +1328,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1418,15 +1434,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1437,13 +1453,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1537,75 +1553,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1826,7 +1842,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1871,28 +1887,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1929,7 +1945,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1977,32 +1992,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2061,15 +2076,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2079,7 +2094,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2137,6 +2152,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2155,36 +2171,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2272,11 +2288,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2342,36 +2358,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2426,27 +2442,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2457,7 +2473,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2493,7 +2509,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2688,21 +2704,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2727,7 +2743,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2768,7 +2784,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2994,94 +3010,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3128,7 +3144,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3403,11 +3418,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3714,22 +3729,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3739,7 +3754,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3865,7 +3880,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3982,112 +3997,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4119,8 +4178,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4166,21 +4225,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4535,7 +4611,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4740,10 +4816,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4751,6 +4827,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4847,7 +4931,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4855,7 +4939,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4898,11 +4982,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4911,36 +4995,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5184,18 +5268,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5203,24 +5287,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5229,59 +5313,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5302,7 +5390,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5363,29 +5451,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5702,11 +5790,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 9181dfade..3777b83f7 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,40 +22,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -107,6 +102,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -337,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -583,8 +588,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -757,7 +762,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -798,19 +803,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -824,7 +829,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -842,12 +847,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -889,7 +894,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -908,21 +913,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -985,18 +986,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1190,7 +1191,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1307,11 +1308,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1327,6 +1328,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1418,15 +1434,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1437,13 +1453,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1537,75 +1553,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1826,7 +1842,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1871,28 +1887,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1929,7 +1945,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1977,32 +1992,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2061,15 +2076,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2079,7 +2094,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2137,6 +2152,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2155,36 +2171,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2272,11 +2288,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2342,36 +2358,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2426,27 +2442,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2457,7 +2473,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2493,7 +2509,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2688,21 +2704,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2727,7 +2743,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2768,7 +2784,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2994,94 +3010,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3128,7 +3144,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3403,11 +3418,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3714,22 +3729,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3739,7 +3754,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3865,7 +3880,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3982,112 +3997,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4119,8 +4178,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4166,21 +4225,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4535,7 +4611,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4740,10 +4816,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4751,6 +4827,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4847,7 +4931,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4855,7 +4939,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4898,11 +4982,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4911,36 +4995,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5184,18 +5268,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5203,24 +5287,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5229,59 +5313,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5302,7 +5390,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5363,29 +5451,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5702,11 +5790,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 513782400..62738571c 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,40 +23,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -108,6 +103,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -338,7 +343,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -584,8 +589,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -758,7 +763,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -799,19 +804,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -825,7 +830,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -843,12 +848,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -890,7 +895,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -909,21 +914,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -986,18 +987,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1191,7 +1192,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1308,11 +1309,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1328,6 +1329,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1419,15 +1435,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1438,13 +1454,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1538,75 +1554,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1827,7 +1843,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1872,28 +1888,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1930,7 +1946,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1978,32 +1993,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2062,15 +2077,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2080,7 +2095,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2138,6 +2153,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2156,36 +2172,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2273,11 +2289,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2343,36 +2359,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2427,27 +2443,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2458,7 +2474,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2494,7 +2510,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2689,21 +2705,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2728,7 +2744,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2769,7 +2785,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2995,94 +3011,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3129,7 +3145,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3404,11 +3419,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3715,22 +3730,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3740,7 +3755,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3866,7 +3881,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3983,112 +3998,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4120,8 +4179,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4167,21 +4226,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4536,7 +4612,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4741,10 +4817,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4752,6 +4828,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4848,7 +4932,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4856,7 +4940,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4899,11 +4983,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4912,36 +4996,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5185,18 +5269,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5204,24 +5288,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5230,59 +5314,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5303,7 +5391,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5364,29 +5452,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5703,11 +5791,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 2c4de351c..b7fc9a9b4 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-26 13:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Tjenesten %(service_name)s kjører." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Lytter på {kind} port {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Lytter på {kind} port {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Kontakt nettadressen {url} på tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Kontakt nettadressen {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Koble til {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Klarer ikke koble til {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Aktiver program" @@ -117,6 +113,16 @@ msgstr "Nett-tjener" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Vev-grensesnitt (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Kontakt nettadressen {url} på tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Kontakt nettadressen {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Tjenesteoppdagelse" @@ -368,7 +374,7 @@ msgid "Create Location" msgstr "Opprett plassering" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Opprett depot" @@ -648,8 +654,8 @@ msgstr "Aktiver DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Aktiver domenenavnsystemets sikkerhetsutvidelser" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Oppsett oppdatert" @@ -850,7 +856,7 @@ msgstr "Viser ikke avanserte programmer og funksjoner" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Fildeling" @@ -906,19 +912,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Oppdaterte opplastingspassord" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Klarte ikke å oppdatere opplastingspassord" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Oppdaterte maksimal filstørrelse" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Klarte ikke å oppdatere maksimal filstørrelse" @@ -934,7 +940,7 @@ msgstr "" "Nettverkstidstjeneren er et program som synkroniserer systemets klokke med " "tjenere på Internettet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Tid synkronisert til NTP-tjener" @@ -954,12 +960,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "– ingen tidssone satt –" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Feil ved setting av tidssone: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Tidssone satt" @@ -1013,7 +1019,7 @@ msgstr "" "Systemets diagnostikktest vil kjøre en rekke kontroller på systemet for å få " "bekreftet at programmer og tjenester fungerer som forventet." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Diagnostikktest" @@ -1032,21 +1038,19 @@ msgid "Results" msgstr "Resultater" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Modul: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Diagnostikkresultater" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Modul: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Denne modulen støtter ikke diagnostikk" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1118,18 +1122,18 @@ msgstr "" msgid "Update setup" msgstr "Oppdater oppsett" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Oppsett uendret" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Brukerregistreringer aktivert" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Brukerregistreringer deaktivert" @@ -1366,7 +1370,7 @@ msgstr "" msgid "Last update" msgstr "Siste oppdatering" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Om" @@ -1503,11 +1507,11 @@ msgstr "" msgid "Configuration" msgstr "Oppsett" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Meldingsarkivhåndtering aktivert" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Meldingsarkivhåndtering deaktivert" @@ -1526,6 +1530,25 @@ msgstr "" "utgående nettverkstrafikk på din {box_name}. Å holde en brannmur aktivert og " "riktig konfigurert, reduserer risikoen for sikkerhetstrusler fra Internett." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"Tjenesten %(service_name)s er kun tilgjengelig på interne nettverk." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"Tjenesten %(service_name)s er kun tilgjengelig på interne nettverk." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1632,16 +1655,16 @@ msgstr "Gå i gang med oppsett" msgid "Setup Complete" msgstr "Oppsett ferdig" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 #, fuzzy msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Enkelt Git-vertsskap" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 #, fuzzy msgid "" "Git is a distributed version-control system for tracking changes in source " @@ -1660,7 +1683,7 @@ msgstr "" "flerfoldige grafiske klienter. Du kan også dele koden med folk rundt omkring " "i verden." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1668,7 +1691,7 @@ msgstr "" "For å lære mer om bruk av Git, besøk Git-veiledningen." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 #, fuzzy msgid "Read-write access to Git repositories" msgstr "Lese- og skrivetilgang til Git-kodelagre" @@ -1802,83 +1825,83 @@ msgstr "Slett dette øyeblikksbildet permanent?" msgid "Delete %(name)s" msgstr "Slette %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "En feil oppsto under konfigureringen." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Opprett depot" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "En feil oppsto under konfigureringen." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "Slettet {name}." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentasjon" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Få støtte" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Send inn tilbakemeldinger" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Bidra" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentasjon og ofte stilte spørsmål" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -2169,7 +2192,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonymitetsnettverk" @@ -2224,11 +2247,11 @@ msgstr "Mellomtjenere" msgid "Anonymous torrents" msgstr "Anonyme torrenter" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P-mellomtjenere og tunneler" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2238,7 +2261,7 @@ msgstr "" "å gjøre dette må din nettleser, helst Tor-nettleseren, settes opp med en " "mellomtjener." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2247,11 +2270,11 @@ msgstr "" "mellomtjenere og tunneler må settes opp ved bruk av " "tunneloppsettsgrensesnittet." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonyme torrenter" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2307,7 +2330,6 @@ msgstr "Vis og rediger wiki-programmer" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2357,33 +2379,33 @@ msgstr "" "Denne handlingen vil fjerne alle poster, sider og kommentarer inkludert " "revisjonshistorien. Skal denne wiki eller bloggen slettes permanent?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Opprettet wiki {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunne ikke opprette wiki: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Opprettet blogg {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunne ikke lage blogg: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "Slettet {name}." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2450,15 +2472,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript lisensinformasjon" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Sertifikater" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2473,7 +2495,7 @@ msgstr "" "ved at det selv bekrefter eierskapet til et domene overfor " "sertifiseringsinstansen (CA) Let's Encrypt." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2535,6 +2557,7 @@ msgstr "Gjeninnhente" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Slett" @@ -2555,7 +2578,7 @@ msgstr "" "Ingen domener er satt opp. Sett opp domener " "for å kunne skaffe sertifikater for dem." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2564,29 +2587,29 @@ msgstr "" "Sertifikat vellykket tilbakekalt for domenet {domain}. Det kan ta en liten " "stund før dette tar effekt." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Klarte ikke å inndra sertifikatet for domenet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Sertifikat vellykket innhentet til domene {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Klarte ikke å oppnå sertifikat til domene {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Vellykket sletting av sertifikatet for domenet {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" @@ -2708,11 +2731,11 @@ msgstr "" " Encrypt for å skaffe deg det.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Offentlig registrering påskrudd" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Offentlig registrering avskrudd" @@ -2796,36 +2819,36 @@ msgstr "" "Hvis påskrudd, vil tilgang begrenses. Kun folk som har kontoer kan lese/" "skrive på wiki-en. Offentlige registreringer vil også bli avskrudd." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Passord oppdatert" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Offentlig registrering aktivert" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Offentlig registrering avskrudd" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Privat modus påskrudd" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Privat modus avskrudd" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Block-sandkassen" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2889,27 +2912,27 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Oppsett av maks spillere oppdatert" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Oppsett av kreativ modus oppdatert" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "PVP-oppsett oppdatert" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Skadeoppsett oppdatert" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2920,7 +2943,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2957,7 +2980,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "Angitt mappe finnes ikke" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3177,15 +3200,15 @@ msgstr "Publisert nøkkel til nøkkeltjener." msgid "Error occurred while publishing key." msgstr "Feil oppstått under utlegging av nøkkel." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Talenettprat" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3193,7 +3216,7 @@ msgstr "" "Mumble er en åpen kildekode, rask, kryptert, høy kvalitets programvare for " "nettprat." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3223,7 +3246,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3281,7 +3304,7 @@ msgstr "" "Enheter administrert gjennom andre metoder kan være utilgjengelige for " "oppsett her." -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruker DNSSEC på IPv{kind}" @@ -3532,96 +3555,96 @@ msgstr "WPA" msgid "Open" msgstr "Åpen" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Nettverksoppkoblinger" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Kan ikke vise tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Oppkoblingsinformasjon" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Kan ikke redigere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Denne typen tilkobling er ennå ikke forstått." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Endre oppkobling" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverte tilkobling {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Kunne ikke aktivere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Klarte ikke aktivere tilkoblingen {name}: Ingen passende enhet er " "tilgjengelig." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Deaktivert tilkobling {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Kunne ikke deaktivere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nettverk i nærheten" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Legg til tilkobling" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Legger til ny generell tilkobling" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Legge til ny Ethernet-tilkobling" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Legge til ny PPPoE-tilkobling" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Legge til ny Wi-Fi-tilkobling" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Tilkobling {name} slettet." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Slett tilkobling" @@ -3668,7 +3691,6 @@ msgid "yes" msgstr "Ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhet" @@ -3983,11 +4005,11 @@ msgstr "" msgid "Download my profile" msgstr "Last ned min profil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Oppsettet fullført." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Oppsettet mislyktes." @@ -4347,15 +4369,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Slå av nå" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Mellomtjener for nettet" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4366,7 +4388,7 @@ msgstr "" "overskrifter, kontrollere tilgang, og fjerne annonser og annet ubehagelig " "Internett-søppel. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4382,7 +4404,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" @@ -4544,7 +4566,7 @@ msgstr "" "freedombox.address>) og ditt brukernavn. Å klikke på søkeknappen vil liste " "opp eksisterende kalendre og adressebøker." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Tilgangskontrolloppsett oppdatert" @@ -4717,112 +4739,166 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Velg disk eller partisjon" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Merkelapp" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Delt" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domenenavn" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Monteringspunkt" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Brukt" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Tilgjengelige domener" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Deling lagt til." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Legg til deling" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Legg til deling" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Hjemmeside" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Deling slettet." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Deling redigert." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Nettsøk" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4830,7 +4906,7 @@ msgstr "" "Searx er en metasøkemotor for Internett som tar hensyn til personvernet. Den " "henter og viser resultater fra flere søkemotorer." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4838,7 +4914,7 @@ msgstr "" "Searx kan brukes for å unngå sporing og profilbygging av søkemotorer. Den " "lagrer ingen kaker som forvalg." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Søk på nettet" @@ -4872,8 +4948,8 @@ msgstr "Tillat offentlig tilgang" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillat dette programmet brukt av alle som kan nå det." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Konfigurering oppdatert." @@ -4934,27 +5010,50 @@ msgstr "" #| "for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "Følgende tabell lister antall innrapporterte sikkerhetssårbarheter for hver " "installerte program." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Programnavn" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 #, fuzzy #| msgid "Show security vulnerabilities" msgid "Current Vulnerabilities" msgstr "Vis sikkerhetssårbarheter" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 #, fuzzy #| msgid "Show security vulnerabilities" msgid "Past Vulnerabilities" msgstr "Vis sikkerhetssårbarheter" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Block-sandkassen" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "Ja" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Ingen" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5355,7 +5454,7 @@ msgstr "Opprett øyeblikksbilde." msgid "Storage snapshots configuration updated" msgstr "Lagringsavbildings-oppsett oppdatert" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Handlingsfeil: {0} [{1}] [{2}]" @@ -5592,11 +5691,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Public share" -msgid "Samba share" -msgstr "Del offentlig" +#| msgid "Shared" +msgid "Share" +msgstr "Delt" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5604,6 +5703,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Følgende lagringsenheter er i bruk:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Merkelapp" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Monteringspunkt" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partisjonsutvidelse" @@ -5717,7 +5824,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Distribuert fillagring" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5729,7 +5836,7 @@ msgstr "" "nettverk av lagringsnoder. Selv om noen av nodene mislykkes, kan filene " "hentes tilbake fra de gjenværende nodene." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5779,11 +5886,11 @@ msgstr "Tilknyttede introduserere" msgid "Remove" msgstr "Fjern" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5797,38 +5904,38 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Skjult Tor-tjeneste" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor Socks-mellomtjener" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Adgang til URL {url} på tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" @@ -6128,11 +6235,11 @@ msgstr "Oppgraderingsprosessen (upgrade process) har startet." msgid "Starting upgrade failed." msgstr "Å starte oppgradering (upgrade) mislyktes." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Brukere og grupper" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 #, fuzzy msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6143,7 +6250,7 @@ msgstr "" "identitetsbekreftelsesmekanisme for de fleste programmer. Noen kan kreve at " "en brukerkonto er en del av gruppen for å klarere brukrens tilgang til det." -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, fuzzy, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6154,24 +6261,24 @@ msgstr "" "liste over programmer som er relevante for dem på hjemmesiden. Dog kan kun " "brukere av admin-gruppen endre programmer eller systeminnstillinger." -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Tilgang til alle tjenester og systeminnstillinger" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Brukernavnet er opptatt eller reservert." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Tilganger" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6185,20 +6292,20 @@ msgstr "" "gruppen kan logge seg på alle tjenester. De kan også logge inn på systemet " "via SSH, og ha administrative rettigheter (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Oppretting av LDAP-bruker feilet." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Klarte ikke legge ny bruker til gruppe {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Autoriserte SSH-nøkler" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6208,39 +6315,45 @@ msgstr "" "på systemet uten å bruke passord. Du kan legge inn multiple (flere) nøkler, " "én på hver linje. Blanke linjer og linjer som starter med # vil bli ignorert." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Klarte ikke å bytte navn på LDAP-bruker." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Klarte ikke å slette bruker fra gruppe." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Klarte ikke sette SSH-nøkler." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Klarte ikke legge bruker til gruppe." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Kan ikke slette kun administratoren i systemet." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Klarte ikke å bytte passord for LDAP-bruker." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Klarte ikke begrense konsolltilgang." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Brukerkonto er opprettet, du er nå logget inn" @@ -6261,7 +6374,7 @@ msgid "Create User" msgstr "Opprett bruker" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Slett bruker" @@ -6327,29 +6440,29 @@ msgstr "Lagre endringer" msgid "User %(username)s created." msgstr "Bruker %(username)s opprettet." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Bruker %(username)s oppdatert." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Rediger bruker" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Bruker {user} slettet." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Klarte ikke slette LDAP-bruker." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Endre passord" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Vellykket passordbytte." @@ -6693,11 +6806,11 @@ msgstr "Sette i gang en web-klient" msgid "Client Apps" msgstr "Klientprogrammer" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Programmet er aktivert" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Programmet er deaktivert" @@ -6705,6 +6818,22 @@ msgstr "Programmet er deaktivert" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Velg disk eller partisjon" + +#, fuzzy +#~| msgid "Public share" +#~ msgid "Samba share" +#~ msgstr "Del offentlig" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 0554d697b..4381a15c4 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-31 01:40+0000\n" "Last-Translator: erlendnagel \n" "Language-Team: Dutch %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Service %(service_name)s wordt uitgevoerd." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Luistert op {kind} poort {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Luistert op {kind} poort {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "ToegangsURL {url} op tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "ToegangsURL {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Verbind met {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Kan niet verbinden met {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Toepassing inschakelen" @@ -112,6 +108,16 @@ msgstr "Webserver" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Web Interface (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "ToegangsURL {url} op tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "ToegangsURL {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Service Discovery" @@ -354,7 +360,7 @@ msgid "Create Location" msgstr "Locatie maken" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Maak Repository" @@ -614,8 +620,8 @@ msgstr "DNSSEC Inschakelen" msgid "Enable Domain Name System Security Extensions" msgstr "Domeinnaamsysteem beveiliging-extensies inschakelen" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Configuratie bijgewerkt" @@ -813,7 +819,7 @@ msgstr "Geavanceerde applicaties en functies verbergen" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Delen van bestanden" @@ -869,19 +875,19 @@ msgstr "" msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Uploadwachtwoord aangepast" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Bijwerken van het upload wachtwoord is mislukt" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Maximale bestandsgrootte bijgewerkt" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Maximale bestandsgrootte bijwerken is mislukt" @@ -897,7 +903,7 @@ msgstr "" "Netwerk Tijd Server is een programma dat de systeemtijd synchroniseert met " "servers op internet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Tijd gesynchroniseerd met NTP-server" @@ -917,12 +923,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- geen tijdzone ingesteld --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Fout bij tijdzone instellen: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Tijdzone ingesteld" @@ -975,7 +981,7 @@ msgstr "" "De systeemdiagnose zal een aantal tests uitvoeren op dit systeem om te " "bevestigen dat de programma's en diensten zoals verwacht functioneren." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Diagnostische test" @@ -994,21 +1000,19 @@ msgid "Results" msgstr "Resultaten" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Module: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Resultaten Diagnostische test" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Module: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Deze module heeft geen diagnosetests" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1081,18 +1085,18 @@ msgstr "" msgid "Update setup" msgstr "Instelling bijwerken" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Instelling onveranderd" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Gebruikersregistratie ingeschakeld" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Gebruikersregistratie uitgeschakeld" @@ -1331,7 +1335,7 @@ msgstr "" msgid "Last update" msgstr "Laatste bijwerking" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Over" @@ -1469,11 +1473,11 @@ msgstr "" msgid "Configuration" msgstr "Configuratie" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Berichten Archief Management aangezet" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Berichten Archief Management uitgezet" @@ -1492,6 +1496,25 @@ msgstr "" "datastromen van {box_name} stuurt. Een geactiveerde en goed ingestelde " "firewall vermindert het risico op beveiligingsrisico's vanuit internet." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "" +"%(service_name)s is alleen beschikbaar binnen interne netwerken." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "" +"%(service_name)s is alleen beschikbaar binnen interne netwerken." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1598,15 +1621,15 @@ msgstr "Setup starten" msgid "Setup Complete" msgstr "Instelling voltooid" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1617,13 +1640,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1746,83 +1769,83 @@ msgstr "Deze Snapshot permanent verwijderen?" msgid "Delete %(name)s" msgstr "%(name)s verwijderen" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Er is een fout opgetreden tijdens de configuratie." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Maak Repository" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Er is een fout opgetreden tijdens de configuratie." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} verwijderd." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Documentatie" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handmatig" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Ondersteuning krijgen" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Feedback indienen" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Bijdragen" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Documentatie en veelgestelde vragen" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Over {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Handleiding" @@ -2085,7 +2108,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonimiteitsnetwerk" @@ -2132,11 +2155,11 @@ msgstr "Proxies" msgid "Anonymous torrents" msgstr "Anonieme torrents" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P Proxies en Tunnels" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2146,17 +2169,17 @@ msgstr "" "te bezoeken. Hiervoor moet je browser , liefst een Tor Browser, ingesteld " "zijn met een proxy." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonieme Torrents" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2210,7 +2233,6 @@ msgstr "Bekijken en bewerken van wiki toepassingen" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2260,33 +2282,33 @@ msgstr "" "Deze actie zal alle bijdragen, pagina's, en commentaar inclusief revisie-" "historie. Deze wiki of blog permanent verwijderen?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} gemaakt." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kan wiki niet aanmaken: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} gemaakt." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kan blog niet aanmaken: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} verwijderd." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2355,15 +2377,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript licentie-informatie" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certificaten" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2379,7 +2401,7 @@ msgstr "" "van een domein te zijn tegenover Let's Encrypt, een certificaatwaarmerker " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2442,6 +2464,7 @@ msgstr "Opnieuw verkrijgen" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Verwijder" @@ -2462,7 +2485,7 @@ msgstr "" "Er zijn geen geconfigureerde domeinen. Stel " "domeinen in om certificaten ervoor te kunnen uitgeven." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2471,29 +2494,29 @@ msgstr "" "Certificaat met succes ingetrokken voor domein {domain}. Het kan enige tijd " "duren voordat het effect heeft." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Intrekken certificaat voor domein {domain} mislukt: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificaat voor domein {domain} met succes verkregen" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Verkrijgen van certificaat voor domein {domain} is mislukt: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificaat met succes verwijderd voor domein {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" @@ -2612,11 +2635,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Openbare registratie ingeschakeld" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Openbare registratie uitgeschakeld" @@ -2701,36 +2724,36 @@ msgstr "" "gebruikers zullen de wiki kunnen lezen en bewerken. Registratie is niet open " "voor publiek." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Wachtwoord bijgewerkt" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Openbare registraties ingeschakeld" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Openbare registraties uitgeschakeld" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Privé-modus ingeschakeld" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Privé-modus uitgeschakeld" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Block Sandbox" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2795,29 +2818,29 @@ msgstr "Adres" msgid "Port" msgstr "Poort" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Instelling maximum aantal spelers bijgewerkt" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Instelling Creatieve modus bijgewerkt" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Instelling PVP bijgewerkt" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Instelling schade bijgewerkt" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Mumble Voice Chat Server" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2828,7 +2851,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2864,7 +2887,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3080,15 +3103,15 @@ msgstr "Sleutel gepubliceerd op keyserver." msgid "Error occurred while publishing key." msgstr "Er is een fout opgetreden tijdens het publiceren van de sleutel." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3096,7 +3119,7 @@ msgstr "" "Mumble is een Open Source, snelle, versleutelde, hoge kwaliteit " "groepsgespreksserver." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3127,7 +3150,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3170,7 +3193,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gebruikt DNSSEC op IPv{kind}" @@ -3426,94 +3449,94 @@ msgstr "WPA" msgid "Open" msgstr "Open" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netwerkverbindingen" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Kan verbinding niet weergeven: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Verbindingsgegevens" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Kan verbinding niet wijzigen: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Deze verbindingsmethode is (nog) niet bekend." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Wijzig verbinding" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Geactiveerde verbinding {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Kan verbinding niet inschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "Kan verbinding {name} niet inschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Verbinding {name} uitgeschakeld." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Kan verbinding niet uitschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi Netwerken dichtbij" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Verbinding toevoegen" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Toevoegen nieuwe Verbinding" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Toevoegen nieuwe Ethernetverbinding" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Toevoegen nieuwe PPPoE verbinding" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Toevoegen nieuwe W-Fi verbinding" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Verbinding {name} verwijderd." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Verwijder verbinding" @@ -3560,7 +3583,6 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Apparaat" @@ -3872,11 +3894,11 @@ msgstr "" msgid "Download my profile" msgstr "Download mijn profiel" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Instelling voltooid." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Instelling mislukt." @@ -4239,15 +4261,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Nu Uitschakelen" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4257,7 +4279,7 @@ msgstr "" "om privacy te verhogen, webpagina data en HTTP headers te wijzigen, toegang " "te controleren, en advertenties en andere rommel te weren. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4272,7 +4294,7 @@ msgstr "" "href=\"http://config.privoxy.org\">http://config.privoxy.org/ of http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" @@ -4430,7 +4452,7 @@ msgstr "" "freedombox.address>) en uw gebruikersnaam. Klikken op de zoekknop zal de " "bestaande kalenders en adresboeken weergeven." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Configuratie van de toegangsrechten is bijgewerkt" @@ -4604,112 +4626,166 @@ msgstr "" "(https://" "www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Schijf of partitie selecteren" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Label" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Gedeeld" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domeinnaam" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Koppelpunt" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Gebruikt" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Beschikbare Domeinen" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Gedeelde map toegevoegd." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Acties" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Gedeelde map toevoegen" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Gedeelde map toevoegen" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Startpagina" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Gedeelde map verwijderd." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Fout bij het installeren van de toepassing: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Gedeelde map bewerkt." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Fout bij het installeren van de toepassing: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Zoeken op het Internet" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4717,7 +4793,7 @@ msgstr "" "Searx is een privacy-respecterende internet metasearch engine. Het " "aggregeert en toont resultaten van meerdere zoekmachines." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4725,7 +4801,7 @@ msgstr "" "Searx kan worden gebruikt om tracking en profilering door zoekmachines te " "voorkomen. Het slaat standaard geen cookies op." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Zoeken op internet" @@ -4760,8 +4836,8 @@ msgstr "" "Sta toe dat deze applicatie wordt gebruikt door iedereen die er toegang toe " "heeft." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Configuratie bijgewerkt." @@ -4812,21 +4888,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Applicatie naam" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "Huidige kwetsbaarheden" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Kwetsbaarheden in het verleden" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Block Sandbox" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "ja" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Geen" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5222,7 +5321,7 @@ msgstr "Gemaakte snapshot." msgid "Storage snapshots configuration updated" msgstr "Opslag van Snapshots configuratie is bijgewerkt" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Actiefout: {0} [{1}] [{2}]" @@ -5445,11 +5544,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Public share" -msgid "Samba share" -msgstr "Publieke share" +#| msgid "Shared" +msgid "Share" +msgstr "Gedeeld" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5457,6 +5556,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "De volgende opslagapparaten zijn in gebruik:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Label" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Koppelpunt" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partitie Vergroting" @@ -5573,7 +5680,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Distributed File Storage" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5586,7 +5693,7 @@ msgstr "" "knooppunten uitvallen, kunnen uw bestanden uit de resterende knooppunten " "worden opgehaald." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5637,11 +5744,11 @@ msgstr "Verbonden introduceerders" msgid "Remove" msgstr "Verwijderen" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5655,38 +5762,38 @@ msgstr "" "de Tor " "Browser aan." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor-Hidden Service" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor Socks Proxy" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Gebruik URL {url} op tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" @@ -5994,18 +6101,18 @@ msgstr "Upgrade-proces gestart." msgid "Starting upgrade failed." msgstr "Starten van de upgrade is mislukt." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Gebruikers en Groepen" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6013,24 +6120,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Toegang tot alle diensten en systeeminstellingen" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Gebruikersnaam is in gebruik of is gereserveerd." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Toegangsrechten" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6045,20 +6152,20 @@ msgstr "" "ook op het systeem inloggen met SSH en kunnen systeemadministratie doen " "(sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "LDAP gebruiker aanmaken mislukt." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nieuwe gebruiker aan groep {group} toevoegen mislukt." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Geautoriseerde SSH-sleutels" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6069,39 +6176,45 @@ msgstr "" "sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen " "met # worden genegeerd." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "LDAP gebruiker hernoemen mislukt." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Gebruiker uit groep verwijderen mislukt." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Kan de SSH-sleutels niet instellen." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Gebruiker aan groep toevoegen mislukt." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Kan de enige beheerder in het systeem niet verwijderen." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Toevoegen van gebruiker aan admin groep mislukt." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Consoletoegang beperken is mislukt." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Gebruikersaccount aangemaakt, U bent nu ingelogd" @@ -6122,7 +6235,7 @@ msgid "Create User" msgstr "Nieuwe gebruiker registreren" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Gebruiker verwijderen" @@ -6188,29 +6301,29 @@ msgstr "Wijzigingen opslaan" msgid "User %(username)s created." msgstr "Gebruiker %(username)s aangemaakt." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Gebruiker %(username)s bijgewerkt." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Gebruiker wijzigen" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Gebruiker {user} verwijderd." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Verwijderen van LDAP gebruiker mislukt." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Wijzig wachtwoord" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." @@ -6553,11 +6666,11 @@ msgstr "Start web cliënt" msgid "Client Apps" msgstr "Cliënttoepassingen" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Toepassing ingeschakeld" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Toepassing uitgeschakeld" @@ -6565,6 +6678,22 @@ msgstr "Toepassing uitgeschakeld" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Module: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Module: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Schijf of partitie selecteren" + +#, fuzzy +#~| msgid "Public share" +#~ msgid "Samba share" +#~ msgstr "Publieke share" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index a990a8e1b..4c4b24d01 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-11-18 18:04+0000\n" "Last-Translator: Radek Pasiok \n" "Language-Team: Polish %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Usługa %(service_name)s jest uruchomiona." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Nasłuchuję na {kind} port {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Nasłuchuję na {kind} port {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Adres URL {url} na {kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Adres URL {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Podłączony do {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Nie mogę się podłączyć do {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Aktywuj aplikację" @@ -111,6 +107,16 @@ msgstr "Serwer Web" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} interfejs sieciowy (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Adres URL {url} na {kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Adres URL {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Wykrywanie usług" @@ -360,7 +366,7 @@ msgid "Create Location" msgstr "Utwórz lokalizację" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Utwórz repozytorium" @@ -641,8 +647,8 @@ msgstr "Włącz DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Włącz rozszerzenia zabezpieczeń systemu nazw domen" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Konfigurcja uaktualniona" @@ -840,7 +846,7 @@ msgstr "Ukrywanie zaawansowanych aplikacji i cech" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Współdzielenie plików" @@ -890,19 +896,19 @@ msgstr "Ustaw maksymalny rozmiar pliku, jaki można przesłać w Coquelicot." msgid "coquelicot" msgstr "coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Zmieniono hasło do przesyłania" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Nie udało się zmienić hasła do przesyłania" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Zaktualizowano maksymalny rozmiar pliku" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Nie udało się zmienić maksymalnego rozmiaru pliku" @@ -918,7 +924,7 @@ msgstr "" "Serwer czasu jest programem, który utrzymuje czas systemowy w synchronizacji " "z serwerami w Internecie." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Zsynchronizowano czas z serwerem NTP" @@ -938,12 +944,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- Strefa czasowa nie ustawiona --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Błąd ustawiania strefy czaowej:{exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Strefa czasowa ustawiona" @@ -996,7 +1002,7 @@ msgstr "" "Diagnostyka systemu testuje czy aplikacje i usługi na twiom systemie " "dzialają jak należy." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Test diagnostyczny" @@ -1015,21 +1021,19 @@ msgid "Results" msgstr "Wyniki" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Moduł: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Wynik diagnostyki" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Moduł: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Ten moduł nie obsługuje diagnostyki" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1102,18 +1106,18 @@ msgstr "" msgid "Update setup" msgstr "Aktualizuj ustawienia" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Ustawienie bez zmian" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Rejestracja użytkowników włączona" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Rejestracja użytkowników wyłączona" @@ -1349,7 +1353,7 @@ msgstr "" msgid "Last update" msgstr "Ostatnie uaktualnienie" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Informacje" @@ -1482,11 +1486,11 @@ msgstr "" msgid "Configuration" msgstr "Konfiguracja" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Zarządzanie historią wiadomości włączone" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Zarządzanie historią wiadomości wyłączone" @@ -1505,6 +1509,23 @@ msgstr "" "ruch sieciowy na twoim {box_name}. Włączony i poprawnie skonfigurowany " "firewall redukuje ryzyko zagrożeń z Internetu." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "Service %(service_name)s is not running." +msgid "Port {name} ({details}) available for internal networks" +msgstr "Usługa %(service_name)s nie jest uruchomiona." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "Service %(service_name)s is not running." +msgid "Port {name} ({details}) available for external networks" +msgstr "Usługa %(service_name)s nie jest uruchomiona." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1605,15 +1626,15 @@ msgstr "Rozpocznij" msgid "Setup Complete" msgstr "Instalacja zakończona" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1624,13 +1645,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1750,81 +1771,81 @@ msgstr "Usunąć trwale to archiwum?" msgid "Delete %(name)s" msgstr "Usuń %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentacja" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Instrukcja" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "DOkumentacja i FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Podręcznik" @@ -2066,7 +2087,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" @@ -2115,28 +2136,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2175,7 +2196,6 @@ msgstr "Aplikacje i usługi" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2225,33 +2245,33 @@ msgstr "" "Ta akcja spowoduje usunięcie wszystkich postów, stron oraz komentarzy - w " "tym historii zmian. Trwale usunąć wiki lub blog?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Archiwum zostało usunięte." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2313,16 +2333,16 @@ msgstr "" msgid "JavaScript license information" msgstr "Informacje o licencji JavaScript" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 #, fuzzy msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certyfikaty" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2332,7 +2352,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2392,6 +2412,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Usuń" @@ -2410,36 +2431,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2529,11 +2550,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2607,48 +2628,48 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Hasło" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "Aplikacja zainstalowania." -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "Aplikacja zainstalowania." -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "Application enabled" msgid "Private mode enabled" msgstr "Aplikacja włączona" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "Application disabled" msgid "Private mode disabled" msgstr "Aplikacja wyłączona" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" msgstr "Zablokowano" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2703,27 +2724,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Zaktualizowano maksymalną ilość graczy" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Zaktualizowano ustawienia trybu kreatywnego" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Zaktualizowano ustawienia PVP" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Zaktualizowano ustawienia zniszczeń" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2734,7 +2755,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2770,7 +2791,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2965,21 +2986,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3006,7 +3027,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -3047,7 +3068,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3273,94 +3294,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3407,7 +3428,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Urządzenie" @@ -3684,11 +3704,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -4007,22 +4027,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4032,7 +4052,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4160,7 +4180,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" @@ -4279,120 +4299,166 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" -msgid "Select disks for sharing" -msgstr "Zaznacz dysk lub partycję" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Nazwa domeny" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Punkt montowania" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "W użyciu" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Akcje" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" +msgstr "" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Home" +msgid "Home Share" +msgstr "Dom" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Błąd podczas instalowania aplikacji: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "Aplikacja wyłączona" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Błąd podczas instalowania aplikacji: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4424,8 +4490,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4471,23 +4537,42 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Nazwa" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Blocked" +msgid "Sandboxed" +msgstr "Zablokowano" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4858,7 +4943,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -5078,10 +5163,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5091,6 +5176,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Używane są następujące dyski:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Punkt montowania" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5193,7 +5286,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5201,7 +5294,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5244,11 +5337,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5257,36 +5350,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5547,18 +5640,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5566,24 +5659,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5592,59 +5685,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Tworzenie użytkownika LDAP się nie udało." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add new user to admin group." +msgid "Failed to change user status." +msgstr "Nieudane dodawanie użytkownika do grupy admin." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Utworzono konto użytkownika, możesz się teraz zalogować" @@ -5665,7 +5764,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5729,29 +5828,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -6110,11 +6209,11 @@ msgstr "Uruchom klienta przeglądarkowego" msgid "Client Apps" msgstr "Klient czatu" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Aplikacja włączona" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Aplikacja wyłączona" @@ -6122,6 +6221,17 @@ msgstr "Aplikacja wyłączona" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "Moduł: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Moduł: %(module_name)s" + +#, fuzzy +#~| msgid "Select Disk or Partition" +#~ msgid "Select disks for sharing" +#~ msgstr "Zaznacz dysk lub partycję" + #~ msgid "Only alphanumeric characters are allowed." #~ msgstr "Dozwolone są tylko znaki alfanumeryczne." diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 8f501b8bc..a3ee632f5 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: adaragao \n" "Language-Team: Portuguese Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1635,81 +1654,81 @@ msgstr "Apagar este arquivo permanentemente?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1936,7 +1955,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1983,11 +2002,11 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -1997,17 +2016,17 @@ msgstr "" "anonimamente. Para isto, o seu browser, de preferência um browser Tor, " "precisa de ter uma proxy configurada." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2048,7 +2067,6 @@ msgstr "Serviços e Aplicações" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2096,33 +2114,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Arquivo apagado." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2181,15 +2199,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2199,7 +2217,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2261,6 +2279,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2279,36 +2298,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2399,13 +2418,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "Aplicações" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2477,44 +2496,44 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Applications" msgid "Public registrations enabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Applications" msgid "Public registrations disabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "Applications" msgid "Private mode enabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "Applications" msgid "Private mode disabled" msgstr "Aplicações" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2571,35 +2590,35 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2610,7 +2629,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2646,7 +2665,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2847,21 +2866,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2888,7 +2907,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2929,7 +2948,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3155,94 +3174,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3289,7 +3308,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3566,11 +3584,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3877,22 +3895,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3902,7 +3920,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4030,7 +4048,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4153,120 +4171,168 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Archive name" +msgid "Shares" +msgstr "Nome do arquivo" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Nome de Domínio" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Archive name" msgid "Share name" msgstr "Nome do arquivo" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Applications" msgid "Action" msgstr "Aplicações" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" +msgstr "" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Applications" msgid "Share disabled." msgstr "Aplicações" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4298,8 +4364,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "Permitir o uso desta aplicação por todos." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 #, fuzzy #| msgid "Configuration updated" msgid "Configuration updated." @@ -4347,23 +4413,40 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Nome" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" @@ -4723,7 +4806,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4934,10 +5017,12 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" -msgstr "" +#, fuzzy +#| msgid "Archive name" +msgid "Share" +msgstr "Nome do arquivo" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4945,6 +5030,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5042,7 +5135,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5050,7 +5143,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5093,11 +5186,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5106,36 +5199,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5391,18 +5484,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5410,24 +5503,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5436,59 +5529,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5509,7 +5606,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5570,29 +5667,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5921,13 +6018,13 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "Aplicações" -#: plinth/views.py:184 +#: plinth/views.py:182 #, fuzzy #| msgid "Applications" msgid "Application disabled" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 46d636773..1e5083c84 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Igor \n" "Language-Team: Russian %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Выполняется служба %(service_name)s." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Слушать на {kind} порт {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Слушать порт {port} на {kind}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Доступ к URL {url} по tcp {kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Доступ к URL {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Подключение к {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Невозможно подключиться к {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FrеedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Включить приложение" @@ -111,6 +107,16 @@ msgstr "Веб-сервер" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Веб-интерфейс (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Доступ к URL {url} по tcp {kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Доступ к URL {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Обнаружение служб" @@ -380,7 +386,7 @@ msgid "Create Location" msgstr "Создание подключения" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Создать репозиторий" @@ -667,8 +673,8 @@ msgstr "Включить DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Включить расширения безопасности системы доменных имен" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Конфигурация обновлена" @@ -870,7 +876,7 @@ msgstr "" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Обмен Файлами" @@ -927,19 +933,19 @@ msgstr "" msgid "coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Пароль загрузки обновлен" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Не удается обновить пароль загрузки" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Максимальный размер файла обновлен" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Не удалось обновить максимальный размер файла" @@ -955,7 +961,7 @@ msgstr "" "Сервер сетевого времени это программа позволяющая системе синхронизировать " "время с серверами в Интернете." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Время синхронизируется с NTP сервером" @@ -975,12 +981,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- не выбран часовой пояс --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Ошибка установки часового пояса: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Смена часового пояса" @@ -1033,7 +1039,7 @@ msgstr "" "Диагностический тест системы проведёт ряд проверок, чтобы убедиться, что " "приложения и службы работают как положено." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Диагностический тест" @@ -1052,21 +1058,19 @@ msgid "Results" msgstr "Результаты" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Модуль: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Результаты диагностики" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Модуль: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Этот модуль не поддерживает диагностику" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1138,18 +1142,18 @@ msgstr "" msgid "Update setup" msgstr "Обновить настройки" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Настройки без изменений" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Регистрации пользователя включена" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Приложение отключено" @@ -1388,7 +1392,7 @@ msgstr "" msgid "Last update" msgstr "Последнее обновление" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "О службе" @@ -1529,11 +1533,11 @@ msgstr "" msgid "Configuration" msgstr "Конфигурация" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Управление архивом сообщение включено" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Управление архивом сообщений выключено" @@ -1553,6 +1557,23 @@ msgstr "" "правильно настроенным, чтобы уменьшить риск информационной опасности из " "Интернета." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "%(service_name)s доступно только во внутренних сетях." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "%(service_name)s доступно только во внутренних сетях." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1659,15 +1680,15 @@ msgstr "Запуск программы установки" msgid "Setup Complete" msgstr "Установка Завершена" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1678,13 +1699,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1814,83 +1835,83 @@ msgstr "Окончательно удалить этот снимок?" msgid "Delete %(name)s" msgstr "Удаление %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Произошла ошибка во время настройки." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Создать репозиторий" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Произошла ошибка во время настройки." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} удален." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Документация" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Руководство" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Документация и FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "О {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "Руководство {box_name}" @@ -2151,7 +2172,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonymity Network" @@ -2206,28 +2227,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2280,7 +2301,6 @@ msgstr "Просмотр и редактирование приложений Wi #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Тип" @@ -2330,33 +2350,33 @@ msgstr "" "Это действие приведет к удалению всех постов, страниц и комментариев, " "включая историю изменений. Окончательно удалить этот вики или блог?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Создать вики {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Не удалось создать вики: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Созданный блог {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Не удалось создать блог: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} удален." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2423,15 +2443,15 @@ msgstr "" msgid "JavaScript license information" msgstr "Информация о лицензии JavaScript" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Сертификаты" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2445,7 +2465,7 @@ msgstr "" "автоматически получать и устанавливать цифровые сертификаты для каждого " "доступного домена." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2508,6 +2528,7 @@ msgstr "Получить повторно" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Удалить" @@ -2531,7 +2552,7 @@ msgstr "" "Не настроено ни одного домена. Настройте домены, чтобы иметь возможность " "получить сертификаты для них." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2540,29 +2561,29 @@ msgstr "" "Сертификат успешно отменен для домена {domain}. Для принятия изменений может " "потребоваться время." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Не удалось отозвать сертификат для домена {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Сертификат успешно получен для домена {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Не удалось получить сертификат для домена {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Сертификат успешно удален для домена {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Не удалось удалить сертификат для домена {domain}: {error}" @@ -2685,11 +2706,11 @@ msgstr "" " Encrypt, чтобы получить его.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Публичная регистрация включена" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Публичная регистрация отключена" @@ -2774,36 +2795,36 @@ msgstr "" "записи, смогут читать или писать в вики. Публичные регистрации также будут " "отключены." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Пароль обновлен" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Публичная регистрация включена" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Публичная регистрация отключена" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Режим приватности включен" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Режим приватности выключен" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Песочница" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2869,29 +2890,29 @@ msgstr "Адрес" msgid "Port" msgstr "Порт" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Максимум игроков обновлен" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Конфигурация творческого режима обновлена" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "Конфигурация PVP обновлена" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Конфигурация урона обновлена" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Mumble Сервер Голосового Чата" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2902,7 +2923,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2938,7 +2959,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3159,15 +3180,15 @@ msgstr "Опубликованый ключ на сервере ключей." msgid "Error occurred while publishing key." msgstr "Произошла ошибка при публикации ключа." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Голосовой чат" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3175,7 +3196,7 @@ msgstr "" "Mumble это шифрованый чат с высоким качеством голоса, низкой задержкой и " "открытым исходным кодом." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3205,7 +3226,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3258,7 +3279,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Использовать DNSSEC на IPv{kind}" @@ -3510,94 +3531,94 @@ msgstr "WPA" msgid "Open" msgstr "Open" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Сетевые подключения" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Не удается показать подключение: соединение не найдено." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Сведения о подключении" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Нельзя редактировать подключение: подключение не найдено." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Этот тип подключения еще не понятен." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Редактирование подключения" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Установленное подключение {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Невозможно установить подключение: Подключение не найдено." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "Не удалось установить подключение {name}: Нет подходящего устройства." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Разорвано подключение {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Не удалось разорвать подключение: соединение не найдено." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Соседние сети Wi-Fi" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Добавить подключение" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Добавление нового общего подключения" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Добавление нового подключения Ethernet" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Добавление нового подключения PPPoE" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Добавление нового подключения Wi-Fi" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Подключение {name} удалено." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Не удалось удалить подключение: соединение не найдено." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Удаление подключения" @@ -3644,7 +3665,6 @@ msgid "yes" msgstr "Да" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Устройство" @@ -3959,11 +3979,11 @@ msgstr "" msgid "Download my profile" msgstr "Скачать мой профиль" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Установка завершена." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Установка не удалась." @@ -4322,15 +4342,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Завершить работу сейчас" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Web-прокси" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4341,7 +4361,7 @@ msgstr "" "HTTP, контроля доступа и удаления рекламы и прочего неприятного мусора в " "интернете. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4356,7 +4376,7 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org или http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" @@ -4517,7 +4537,7 @@ msgstr "" "address>) и ваше имя пользователя. Нажав на кнопку поиска будет список " "существующих календарей и адресных книг." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" @@ -4692,110 +4712,166 @@ msgstr "" "security/lesssecureapps\" >https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Метка" +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Общее" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Доменное имя" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Точка монтирования" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Используется" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Доступные Домены" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Share added." msgid "Share name" msgstr "Общий ресурс добавлен." -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Действия" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Добавить общий ресурс" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Добавить общий ресурс" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Домашняя страница" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Общий ресурс удалён." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Общий ресурс изменён." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Веб-поиск" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4803,7 +4879,7 @@ msgstr "" "Searx - это конфиденциальная метапоисковая система. Она агрегирует и " "показывает результаты с разных поисковых систем." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4811,7 +4887,7 @@ msgstr "" "Searx может быть использован, чтобы избежать отслеживания и профилирования " "поисковыми системами. Она не хранит никаких файлов cookie по умолчанию." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Поиск в интернете" @@ -4845,8 +4921,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Конфигурация обновлена." @@ -4902,23 +4978,46 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Имя" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Песочница" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "Да" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "нет" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5325,7 +5424,7 @@ msgstr "Создан снимок." msgid "Storage snapshots configuration updated" msgstr "Настройки хранения снапшотов обновлены" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Ошибка действий: {0}[{1}][{2}]" @@ -5555,11 +5654,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "Опубликовать ключ" +#| msgid "Shared" +msgid "Share" +msgstr "Общее" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5567,6 +5666,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Используются следующие устройства хранения:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Метка" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Точка монтирования" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Расширение Раздела" @@ -5683,7 +5790,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Распределенное Хранилище Файлов" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5695,7 +5802,7 @@ msgstr "" "распределенной сети узлов хранения файлов. Если некоторые узлы будут " "недоступны, вы можете получить ваши файлы от оставшихся узлов." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5745,11 +5852,11 @@ msgstr "Подключенные посредники" msgid "Remove" msgstr "Удалить" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5763,38 +5870,38 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Скрытый сервис Tor" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor Socks прокси" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" @@ -6097,18 +6204,18 @@ msgstr "Начался процесс обновления." msgid "Starting upgrade failed." msgstr "Сбой при запуске обновления." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Пользователи и группы" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6116,24 +6223,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Доступ ко всем сервисам и настройкам системы" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Имя пользователя уже занято." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Разрешения" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6147,20 +6254,20 @@ msgstr "" "Пользователи в группе администратора имеют доступ ко всем службам. Они также " "могут войти в систему через SSH и иметь административные привилегии (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Создание пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Не удалось добавить нового пользователя в группу {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Авторизованные SSH ключи" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6171,39 +6278,45 @@ msgstr "" "на каждой строке. Пустые строки и строки, начинающиеся с # будут " "игнорироваться." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Переименование пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Не удалось удалить пользователя из группы." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Не удалось добавить пользователя в группу." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Не удалось задать ключи SSH." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Не удалось добавить пользователя в группу." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Невозможно удалить единственного администратора в системе." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Изменение LDAP пароля пользователя не удалось." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Не удалось добавить нового пользователя в группу администратора." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Не удалось ограничить доступ к консоли." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" @@ -6224,7 +6337,7 @@ msgid "Create User" msgstr "Создать пользователя" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Удаление пользователя" @@ -6290,29 +6403,29 @@ msgstr "Сохранить изменения" msgid "User %(username)s created." msgstr "Пользователь %(username)s создан." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Пользователь %(username)s обновлен." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Редактирование пользователя" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Пользователь {user} удален." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Сбой при удалении LDAP пользователя." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Смена пароля" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Пароль успешно изменён." @@ -6655,11 +6768,11 @@ msgstr "Запустить веб-клиент" msgid "Client Apps" msgstr "Клиентские Приложения" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Приложение включено" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Приложение отключено" @@ -6667,6 +6780,17 @@ msgstr "Приложение отключено" msgid "Gujarati" msgstr "Гуджарати" +#~ msgid "Module: %(module)s" +#~ msgstr "Модуль: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Модуль: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "Опубликовать ключ" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index aed39d7f7..f9a6fee96 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-05-07 20:48+0000\n" "Last-Translator: Erik Ušaj \n" "Language-Team: Slovenian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1668,81 +1684,81 @@ msgstr "Želite ta arhiv trajno izbrisati?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1963,7 +1979,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -2008,28 +2024,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2066,7 +2082,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2114,33 +2129,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Arhiv je izbrisan." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2199,15 +2214,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2217,7 +2232,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2275,6 +2290,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2293,36 +2309,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2410,11 +2426,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2480,36 +2496,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2564,27 +2580,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2595,7 +2611,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2631,7 +2647,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2826,21 +2842,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2867,7 +2883,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2908,7 +2924,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3134,94 +3150,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3268,7 +3284,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3545,11 +3560,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3856,22 +3871,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3881,7 +3896,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4007,7 +4022,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4124,116 +4139,162 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Ime domene" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Encryption" msgid "Action" msgstr "Šifriranje" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" -msgid "Error enabling share: {error_message}" -msgstr "Napaka ob nameščanju aplikacije: {error}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" +msgid "Error enabling share: {error_message}" +msgstr "Napaka ob nameščanju aplikacije: {error}" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, fuzzy, python-brace-format +#| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4265,8 +4326,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4312,23 +4373,40 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Ime" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4683,7 +4761,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4892,10 +4970,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4903,6 +4981,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4999,7 +5085,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5007,7 +5093,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5050,11 +5136,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5063,36 +5149,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5344,18 +5430,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5363,24 +5449,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5389,59 +5475,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5462,7 +5552,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5523,29 +5613,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5862,11 +5952,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 1078e76dc..25221b7a8 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-12-22 20:21+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "Tjänsten %(service_name)s körs." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Lyssnar på {kind} port {listen_address}:{port}" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Lyssnar på {kind} port {port}" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "Ansluter till adress {url} on tcp{kind}" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "Ansluter till adress {url}" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Anslut till {host}:{port}" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Kan inte ansluta till {host}:{port}" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Aktivera applikation" @@ -110,6 +106,16 @@ msgstr "Webbserver" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Webbgränssnitt (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "Ansluter till adress {url} on tcp{kind}" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "Ansluter till adress {url}" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Identifiera tjänster" @@ -358,7 +364,7 @@ msgid "Create Location" msgstr "Skapa plats" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Skapa respository" @@ -635,8 +641,8 @@ msgstr "Aktivera DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "Aktivera Domain Name System Security Extensions" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Konfiguration uppdaterad" @@ -834,7 +840,7 @@ msgstr "Dölja avancerade appar och funktioner" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Fildelning" @@ -885,19 +891,19 @@ msgstr "" msgid "coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "Ladda upp lösenordet uppdaterat" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "Det gick inte att uppdatera uppladdningslösenordet" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Maximal filstorlek uppdaterad" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "Det gick inte att uppdatera den maximala filstorleken" @@ -913,7 +919,7 @@ msgstr "" "Network time server är ett program som upprätthåller synkronisering av " "systemtiden med servrar på Internet." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "Tid synkroniserad till NTP-server" @@ -933,12 +939,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- ingen tidszon inställd --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Fel i inställning av tidszon: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Tidszon inställd" @@ -986,7 +992,7 @@ msgstr "" "Systemets diagnostiktest utför ett antal kontroller av ditt system för att " "bekräfta att program och tjänster fungerar som de ska." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Diagnostiktest" @@ -1005,21 +1011,19 @@ msgid "Results" msgstr "Resultat" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Modul: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Diagnostikresultat" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Modul: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Denna modul har inte stöd för diagnostik" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1092,18 +1096,18 @@ msgstr "" msgid "Update setup" msgstr "Uppdatera inställningar" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Instänllningar oförändrade" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Användarregistreringar aktiverade" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Användarregistreringar avaktiveras" @@ -1340,7 +1344,7 @@ msgstr "" msgid "Last update" msgstr "Senaste uppdatering" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Om" @@ -1477,11 +1481,11 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Meddelandearkivhantering aktiverad" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Meddelandearkivhantering avaktiverad" @@ -1500,6 +1504,23 @@ msgstr "" "nätverkstrafiken på din {box_name}. Att ha en brandvägg aktiverad och " "korrekt konfigurerad minskar risken för säkerhetshot från Internet." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for internal networks" +msgstr "%(service_name)s är endast tillgänglig på interna nätverk." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "%(service_name)s is available only on internal networks." +msgid "Port {name} ({details}) available for external networks" +msgstr "%(service_name)s är endast tillgänglig på interna nätverk." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1603,15 +1624,15 @@ msgstr "Starta installationsprogrammet" msgid "Setup Complete" msgstr "Installationen Klar" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "Enkelt Git hosting" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1629,7 +1650,7 @@ msgstr "" "Git-klient eller med flera tillgängliga grafiska klienter. Och du kan dela " "din kod med människor runt om i världen." -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -1637,7 +1658,7 @@ msgstr "" "För att lära dig mer om hur du använder Git besökGit handledning." -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "Läs-skrivåtkomst till Git-respositories" @@ -1732,75 +1753,75 @@ msgstr "Radera detta arkiv permanent?" msgid "Delete %(name)s" msgstr "Ta bort %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "Respository skapat." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "Ett fel uppstod medan skapa ett repository." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "Respository redigerad." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Ett fel inträffade under konfiguration." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} borttagen." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Få stöd" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Skicka feedback" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Bidra" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Dokumentation och Vanliga Frågor" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -2090,7 +2111,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonymitetsnätverk" @@ -2143,11 +2164,11 @@ msgstr "Proxyservrar" msgid "Anonymous torrents" msgstr "Anonyma torrenter" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "I2P Proxies och tunnlar" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " @@ -2157,7 +2178,7 @@ msgstr "" "detta måste din webbläsare, helst en Tor-webbläsare, konfigureras för en " "proxy." -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." @@ -2165,11 +2186,11 @@ msgstr "" "Som standard är HTTP-, HTTPS- och IRC-proxyer tillgängliga. Ytterligare " "proxyer och tunnlar kan konfigureras med tunnel-konfigurations-gränssnittet." -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "Anonyma torrenter" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2216,7 +2237,6 @@ msgstr "Visa och redigera wiki-applikationer" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2266,32 +2286,32 @@ msgstr "" "Den här åtgärden tar bort alla inlägg, sidor och kommentarer, även " "versionshistorik. Ta bort denna wiki eller blogg permanent?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "Skapade wiki {name}." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunde inte skapa wiki: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "Blogg skapad {name}." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunde inte skapa blogg: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "{title} borttagen." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "Kunde inte ta bort {title}: {error}" @@ -2357,15 +2377,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript-licensinformation" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Låt oss kryptera" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Certifikaterna" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2380,7 +2400,7 @@ msgstr "" "domän. Detta sker genom att den bevisar sig vara ägare till en domän för " "Let's Encrypt, en auktoriserad certifikatutfärdare ." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2442,6 +2462,7 @@ msgstr "Återfå" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Ta bort" @@ -2462,7 +2483,7 @@ msgstr "" "Inga domäner har konfigurerats. Konfigurera " "domäner för att kunna få certifikat för dem." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2471,29 +2492,29 @@ msgstr "" "Certifikatet återkallat för domänen {domain}. Det kan ta några ögonblick att " "träda i kraft." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Det gick inte att återkalla certifikatet för domänen {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certifikat erhållet för domänen {domain}" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Det gick inte att erhålla certifikat för domänen {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" @@ -2615,11 +2636,11 @@ msgstr "" " Encrypt för att få en.\n" " " -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Offentlig registrering aktiverad" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Offentlig registrering avaktiverad" @@ -2703,36 +2724,36 @@ msgstr "" "läsa/skriva till wiki. Offentliga registreringar kommer också att " "inaktiveras." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Lösenord uppdaterad" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "Offentliga registreringar aktiverade" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "Offentliga registreringar avaktiverad" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "Privat läge aktiverat" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "Privat läge inaktiverat" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Block sandbox" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2796,27 +2817,27 @@ msgstr "Adress" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Maximal spelarkonfiguration uppdaterad" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Kreativ-modus konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "PVP-konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "Enkel mediaserver" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2827,13 +2848,13 @@ msgid "" "Kodi." msgstr "" "MiniDLNA är en enkel Media serverprogramvara, med syfte att vara helt " -"kompatibel med DLNA/UPnP-AV-klienter. MiniDNLA-demonen betjänar mediefiler (" -"musik, bilder och video) till klienter i ett nätverk. DNLA/UPnP är Zero " +"kompatibel med DLNA/UPnP-AV-klienter. MiniDNLA-demonen betjänar mediefiler " +"(musik, bilder och video) till klienter i ett nätverk. DNLA/UPnP är Zero " "Configuration Protocol och är kompatibel med alla enheter som passerar DLNA-" "certifiering som bärbara mediaspelare, smartphones, TV-apparater och " "spelsystem (såsom PS3 och Xbox 360) eller applikationer som totem och Kodi." -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "Media Streaming Server" @@ -2850,8 +2871,8 @@ msgid "" msgstr "" "Katalog som MiniDLNA-servern kommer att läsa för innehåll. Alla " "underkataloger i detta kommer också att skannas för mediefiler. Om du ändrar " -"standardvärdet se till att den nya katalogen finns och som är läsbar från \"" -"minidlna\"-användaren. Alla användar mediekataloger (\"/Home/username/\") " +"standardvärdet se till att den nya katalogen finns och som är läsbar från " +"\"minidlna\"-användaren. Alla användar mediekataloger (\"/Home/username/\") " "kommer vanligtvis att fungera." #: plinth/modules/minidlna/manifest.py:25 @@ -2874,7 +2895,7 @@ msgstr "totem" msgid "Specified directory does not exist." msgstr "Den angivna katalogen finns inte." -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "Uppdaterad mediekatalog" @@ -3094,15 +3115,15 @@ msgstr "Publicerade nyckeln till nyckelserver." msgid "Error occurred while publishing key." msgstr "Fel uppstod när nyckeln publicerades." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Röstchatt" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3110,7 +3131,7 @@ msgstr "" "Mumble är ett program för röstchatt med öppen källkod, låg latens, " "kryptering och hög ljudkvalitet." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3141,7 +3162,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "SuperUser lösenord har uppdaterats." @@ -3190,7 +3211,7 @@ msgstr "" "Enheter som administreras via andra metoder kanske inte är tillgängliga för " "konfiguration här." -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Använder DNSSEC på IPv{kind}" @@ -3443,96 +3464,96 @@ msgstr "WPA" msgid "Open" msgstr "Öppet" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Nätverksanslutningar" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Kan inte visa anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Anslutningsinformation" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Kan inte redigera anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Denna typ av anslutning är inte förstådd ännu." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Redigera Anslutning" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverad anslutning {name}." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Det gick inte att aktivera anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Det gick inte att aktivera anslutningen {name}: Ingen lämplig enhet är " "tillgänglig." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Inaktiverade anslutning {name}." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "Kunde inte de-aktivera anslutning: Anslutning hittades inte." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nätverk i närheten" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Lägg till Anslutning" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Lägga till ny generiska anslutning" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Lägg Till Ny Ethernet-Anslutning" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Lägg Till Ny PPPoE-Anslutning" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Lägg Till Ny Wi-Fi-Anslutning" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "Anslutning {name} borttagen." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Ta Bort Anslutning" @@ -3579,7 +3600,6 @@ msgid "yes" msgstr "Ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhet" @@ -3884,11 +3904,11 @@ msgstr "" msgid "Download my profile" msgstr "Ladda ner min profil" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Installationen har slutförts." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Installationen misslyckades." @@ -4240,15 +4260,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Stäng av nu" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Webbproxy" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4258,7 +4278,7 @@ msgstr "" "för att förbättra sekretessen, ändra webbsidan data och HTTP-huvuden, " "kontrollera åtkomst och ta bort annonser och andra avskyvärda Internet Junk. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4273,7 +4293,7 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" @@ -4432,7 +4452,7 @@ msgstr "" "address>) och ditt användarnamn. Om du klickar på sökknappen visas en lista " "över befintliga kalendrar och adressböcker." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Konfiguration av åtkomsträttigheter uppdaterad" @@ -4592,11 +4612,11 @@ msgstr "" "security/lesssecureapps\" >https://www.Google.com/settings/Security/" "lesssecureapps)." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4604,95 +4624,162 @@ msgstr "" "Samba gör det möjligt att dela filer och mappar mellan FreedomBox och andra " "datorer i ditt lokala nätverk." -#: plinth/modules/samba/__init__.py:53 -#, python-brace-format +#: plinth/modules/samba/__init__.py:56 +#, fuzzy, python-brace-format +#| msgid "" +#| "After installation, you can choose which disks to use for sharing. " +#| "Enabled {hostname} shares are open to everyone in your local network and " +#| "are accessible under Network section in the file manager on your computer." msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" "Efter installationen kan du välja vilka diskar som ska användas för delning. " "Aktiverat {hostname}-resurser är öppna för alla i ditt lokala nätverk och är " "tillgängliga under nätverks avsnitt i filhanteraren på datorn." -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" -msgstr "Komma åt delade mappar inifrån servern" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." +msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "Välj diskar för delning" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." +msgstr "" + +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Delade" + +#: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directory will be shared on selected disks, " +#| "not the whole disk." +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." msgstr "" "Obs: endast särskilt skapade katalog kommer att delas på valda diskar, inte " "hela disken." -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" -msgstr "Etikett" +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Domännamn" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Monteringspunkt" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Används" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "vfat-partitioner stöds inte" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" -msgstr "Resurser konfigurerade men disken är inte tillgänglig" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." +msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Tillgängliga domäner" + +#: plinth/modules/samba/templates/samba.html:120 +#, fuzzy +#| msgid "" +#| "If the disk is plugged back in, sharing will be automatically enabled." +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." msgstr "Om disken ansluts igen aktiveras delning automatiskt." -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "Resursnamn" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "Åtgärder" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Share" +msgid "Open Share" +msgstr "Lägg till share" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Share" +msgid "Group Share" +msgstr "Lägg till share" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Hemsida" + +#: plinth/modules/samba/views.py:96 msgid "Share enabled." msgstr "Resurs aktiverad." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Fel vid aktivering av resurs: {error_message}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 msgid "Share disabled." msgstr "Share resurs inaktiverat." -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Fel vid inaktivering av resurs: {error_message}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "Webbsökning" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4700,7 +4787,7 @@ msgstr "" "Searx är en sekretess-respektera Internet metasökning motor. Det aggregrates " "och visar resultat från flera sökmotorer." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4708,7 +4795,7 @@ msgstr "" "Searx kan användas för att undvika spårning och profilering av sökmotorer. " "Den lagrar inga cookies som standard." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "Sök på webben" @@ -4740,8 +4827,8 @@ msgstr "Tillåt offentlig åtkomst" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillåt att det här programmet används av alla som kan nå det." -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Konfiguration uppdaterad." @@ -4793,25 +4880,52 @@ msgstr "" "säkerhetsproblem." #: plinth/modules/security/templates/security_report.html:33 +#, fuzzy +#| msgid "" +#| "The following table lists the current reported number, and historical " +#| "count, of security vulnerabilities for each installed app." msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" "I följande tabell visas aktuellt rapporterat antal och historiskt antal, " "säkerhetsproblem för varje installerad app." -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 msgid "App Name" msgstr "Appens namn" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "Aktuella sårbarheter" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "Tidigare sårbarheter" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Block sandbox" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "Ja" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "Ingen" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5211,7 +5325,7 @@ msgstr "Skapade ögonblicksbild." msgid "Storage snapshots configuration updated" msgstr "Lagring ögonblicksbildkonfiguration uppdaterad" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Åtgärdsfel: {0} [{1}] [{2}]" @@ -5428,10 +5542,12 @@ msgid "Subdirectory (optional)" msgstr "Underkatalog (valfritt)" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" -msgstr "Samba dela" +#, fuzzy +#| msgid "Shared" +msgid "Share" +msgstr "Delade" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "Annan katalog (specificera nedan)" @@ -5439,6 +5555,14 @@ msgstr "Annan katalog (specificera nedan)" msgid "The following storage devices are in use:" msgstr "Följande lagringsenheter används:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "Etikett" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Monteringspunkt" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partition expansion" @@ -5554,7 +5678,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Distribuerad fillagring" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5566,7 +5690,7 @@ msgstr "" "av lagringsnoder. Även om vissa noder misslyckas, kan dina filer hämtas från " "de återstående noderna." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5616,11 +5740,11 @@ msgstr "Anslutna introducerare" msgid "Remove" msgstr "Ta bort" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5634,36 +5758,36 @@ msgstr "" "använder TOR Browser." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "Tor Onion service" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "Tor SOCKS-proxy" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tillgång URL {url} på TCP {kind} via Tor" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" @@ -5947,11 +6071,11 @@ msgstr "Uppgraderingsprocessen påbörjades." msgid "Starting upgrade failed." msgstr "Det gick inte att starta uppgraderingen." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Användare och grupper" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -5962,7 +6086,7 @@ msgstr "" "ett användarkonto för att vara en del av en grupp för att auktorisera " "användaren att komma åt appen." -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5973,24 +6097,24 @@ msgstr "" "över appar som är relevanta för dem på startsidan. Endast användare av " "gruppen admin kan dock ändra appar eller Systeminställningar." -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Tillgång till alla tjänster och Systeminställningar" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Användarnamnet är upptaget eller är reserverade." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "Behörigheter" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6004,20 +6128,20 @@ msgstr "" "administratörsgruppen kommer att kunna logga in på alla tjänster. De kan " "också logga in på systemet via SSH och har administratörsprivilegier (sudo)." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "Det gick inte att skapa LDAP-användare." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Det gick inte att lägga till nya användare i gruppen {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "Auktoriserade SSH-nycklar" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6027,39 +6151,45 @@ msgstr "" "systemet utan att använda ett lösenord. Du kan ange flera nycklar, en på " "varje rad. Tomma rader och rader som börjar med # kommer att ignoreras." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "Det gick inte att byta namn på LDAP-användare." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Det gick inte att ta bort användare från gruppen." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Det gick inte att lägga till användare i gruppen." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "Det går inte att ange SSH-nycklar." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Det gick inte att lägga till användare i gruppen." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "Det går inte att ta bort den enda administratören i systemet." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "Det gick inte att ändra användarlösenordet för LDAP." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Det gick inte att lägga till ny användare till administrationsgruppen." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Det gick inte att begränsa åtkomst till konsolen." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Användarkonto skapat, du är nu inloggad" @@ -6080,7 +6210,7 @@ msgid "Create User" msgstr "Skapa användare" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Ta bort användare" @@ -6146,29 +6276,29 @@ msgstr "Spara ändringar" msgid "User %(username)s created." msgstr "Användaren %(username)s skapades." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "Användaren %(username)s har uppdaterats." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Redigera användar" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "Användare {user} borttagen." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "Det gick inte att ta bort LDAP-användare." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Ändra lösenord" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Lösenordet har ändrats." @@ -6512,11 +6642,11 @@ msgstr "Starta webbklient" msgid "Client Apps" msgstr "Klientappar" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Program aktiverat" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Programmet är inaktiverat" @@ -6524,6 +6654,24 @@ msgstr "Programmet är inaktiverat" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Module: %(module)s" +#~ msgstr "Modul: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Modul: %(module_name)s" + +#~ msgid "Access shared folders from inside the server" +#~ msgstr "Komma åt delade mappar inifrån servern" + +#~ msgid "Select disks for sharing" +#~ msgstr "Välj diskar för delning" + +#~ msgid "Shares configured but the disk is not available" +#~ msgstr "Resurser konfigurerade men disken är inte tillgänglig" + +#~ msgid "Samba share" +#~ msgstr "Samba dela" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 092648b64..4ce436d59 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,40 +22,35 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:298 +#: plinth/context_processors.py:36 plinth/views.py:61 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:85 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "" + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "" - #: plinth/forms.py:39 msgid "Enable application" msgstr "" @@ -107,6 +102,16 @@ msgstr "" msgid "{box_name} Web Interface (Plinth)" msgstr "" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "" @@ -337,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "" @@ -583,8 +588,8 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -757,7 +762,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "" @@ -798,19 +803,19 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 msgid "Upload password updated" msgstr "" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -824,7 +829,7 @@ msgid "" "synchronization with servers on the Internet." msgstr "" -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "" @@ -842,12 +847,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "" @@ -889,7 +894,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "" @@ -908,21 +913,17 @@ msgid "Results" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" +msgid "App: %(app_id)s" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +msgid "This app does not support diagnostics" msgstr "" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -985,18 +986,18 @@ msgstr "" msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "" @@ -1190,7 +1191,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1307,11 +1308,11 @@ msgstr "" msgid "Configuration" msgstr "" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "" @@ -1327,6 +1328,21 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" +#: plinth/modules/firewall/components.py:130 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:138 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1418,15 +1434,15 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1437,13 +1453,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1537,75 +1553,75 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1826,7 +1842,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1871,28 +1887,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -1929,7 +1945,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1977,32 +1992,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2061,15 +2076,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2079,7 +2094,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2137,6 +2152,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2155,36 +2171,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2272,11 +2288,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2342,36 +2358,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2426,27 +2442,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2457,7 +2473,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2493,7 +2509,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2688,21 +2704,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2727,7 +2743,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2768,7 +2784,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -2994,94 +3010,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3128,7 +3144,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3403,11 +3418,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3714,22 +3729,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3739,7 +3754,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3865,7 +3880,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -3982,112 +3997,156 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +msgid "Disk Name" msgstr "" #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, python-brace-format -msgid "Error enabling share: {error_message}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4119,8 +4178,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4166,21 +4225,38 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." -msgstr "" - -#: plinth/modules/security/templates/security_report.html:41 -msgid "App Name" +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" #: plinth/modules/security/templates/security_report.html:42 -msgid "Current Vulnerabilities" +msgid "App Name" msgstr "" #: plinth/modules/security/templates/security_report.html:43 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4535,7 +4611,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4740,10 +4816,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4751,6 +4827,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4847,7 +4931,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4855,7 +4939,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4898,11 +4982,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -4911,36 +4995,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5184,18 +5268,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5203,24 +5287,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5229,59 +5313,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5302,7 +5390,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5363,29 +5451,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5702,11 +5790,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 0fe1f905d..97d015bf5 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Joseph Nuthalapati \n" "Language-Team: Telugu Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1759,79 +1780,79 @@ msgstr "%(name)s అనుసంధానం శాశ్వత msgid "Delete %(name)s" msgstr "%(name)s తొలగించు" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "పత్రావళి" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "కరదీపిక" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "పత్రావళి మరియు తరచూ అడిగే ప్రశ్నలు" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} గురించి" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} కరదీపిక" @@ -2085,7 +2106,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" @@ -2141,28 +2162,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2218,7 +2239,6 @@ msgstr "వికీ అనువర్తనాలను చూడండి మ #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "రకం" @@ -2268,33 +2288,33 @@ msgstr "" "ఈ చర్య పునర్విమర్శ చరిత్రతో సహా అన్ని పోస్ట్లు, పుటలు మరియు వ్యాఖ్యలు తొలగిస్తుంది. ఈ వికీ లేదా బ్లాగ్ " "శాశ్వతంగా తొలగించాలా?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} వికీ సృష్టించబడింది." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "వికీని సృష్టించలేము: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "{name} బ్లాగు సృష్టించబడింది." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "బ్లాగు సృష్టించలేము: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2360,15 +2380,15 @@ msgstr "" msgid "JavaScript license information" msgstr "జావాస్క్రిప్ట్ లైసెన్స్ సమాచరం" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "లెట్స్ ఎన్క్రిప్ట్" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "యోగ్యతాపత్రాలు" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, fuzzy, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2382,7 +2402,7 @@ msgstr "" "కొరకు సెటప్ డిజిటల్ సర్టిఫికెట్లు చేయవచ్చు. ఇది ఎన్క్రిప్ట్ తెలపండి ఒక డొమైన్ యొక్క యజమాని, ధృవపత్ర (CA) " "ఉన్నట్లు రుజువు చేసుకుంటూ అవుతున్నారు." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 #, fuzzy msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " @@ -2446,6 +2466,7 @@ msgstr "తిరిగి-పొందు" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "తొలగించు" @@ -2464,7 +2485,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "తోబుట్టువుల డొమైన్లు కన్ఫిగర్ చేయబడ్డాయి. వారికి సర్టిఫికేట్లు పొందగలగటం డొమైన్ ఆకృతీకరించుము." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2472,30 +2493,30 @@ msgid "" "moments to take effect." msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనబడింది" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనడంలో విఫలం: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ సంపాదింపబడింది" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ సంపాదించుటలో విఫలం: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనబడింది" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}" @@ -2605,13 +2626,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2695,46 +2716,46 @@ msgstr "" "ఇది సశక్త పరిచినట్లయితే, ప్రవేశము నియంత్రించబడుతుంది. ఎవరికీ అయితే ఇప్పటికే ఖాతా ఉందో, వారే మీ వికీని " "చదవగలరు/మార్చగలరు. ప్రజా నమోదు కూడా ఆపివేయబడుతింది." -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "రహస్యపదం" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "అనువర్తనం ఆమోదింపబడలేదు" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy msgid "Private mode enabled" msgstr "PageKite ఎనేబుల్" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy msgid "Private mode disabled" msgstr "PageKite వికలాంగ" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" msgstr "స్యాండ్ బాక్స్ ను అడ్డగించు (మైన్ పరీక్ష)" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2808,37 +2829,37 @@ msgstr "చిరునామా" msgid "Port" msgstr "పోర్టు" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "మంబ్లు సేవిక మాటామంతి గాత్రం" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2849,7 +2870,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2885,7 +2906,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3104,11 +3125,11 @@ msgstr "కీ కీసేవకానికి ప్రచురించబ msgid "Error occurred while publishing key." msgstr "కీని ప్రచురించేటప్పుడు దోషం సంభవించింది." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3118,7 +3139,7 @@ msgstr "" "స్వర సంభాషణ \n" " (Mumble)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3126,7 +3147,7 @@ msgstr "" "మంబుల్ అనేది తక్కువ-జాప్యత, ఎన్క్రిప్టెడ్, అధిక నాణ్యతా వంటి విశిష్టలతో కూడిన ఒక ఓపెన్ సోర్స్ స్వర సంభాషణా " "సాఫ్ట్‌వేర్." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 #, fuzzy msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. http://config.privoxy.org/ లేదా http://p.p లో చూడవచ్చు." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ {url} చేయండి" @@ -4452,7 +4472,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4592,112 +4612,168 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "పంచుకోబడ్డ" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "డొమైను పేరు" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "ఆరొహించు కోన" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "ఉపయోగించబడినది" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "అందుబాటులో ఉన్న డొమైన్లు" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Shared" msgid "Share name" msgstr "పంచుకోబడ్డ" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "చర్యలు" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "సేవ జోడించండి" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "సేవ జోడించండి" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "హోంపేజ్" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} తొలగించబడింది." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "పంచుకోబడ్డ" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "సేర్క్స్" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "జాల సేవకం" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4705,7 +4781,7 @@ msgstr "" "సెర్క్స్ అనేది గోప్యతను గౌరవించే ఒక మెటా-శోధన ఇంజిన్. ఇది బహుళ శోధన ఇంజిన్ల నుండి ఫలితాలను సమీకరించి, " "ప్రదర్శిస్తుంది." -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4713,7 +4789,7 @@ msgstr "" "శోధన యంత్రాలు ద్వారా ట్రాకింగ్ మరియు ప్రొఫైలింగ్ను నివారించడానికి సెర్క్స్ ను ఉపయోగించవచ్చు. ఇది మాములుగా " "కుకీలను నిల్వ ఉంచుకోదు." -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "అంతర్జాలమును శోధింపుము" @@ -4745,8 +4821,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "ఆకృతీకరణ నవీకరించబడింది." @@ -4801,23 +4877,46 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "పేరు" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox (Minetest)" +msgid "Sandboxed" +msgstr "స్యాండ్ బాక్స్ ను అడ్డగించు (మైన్ పరీక్ష)" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "అవును" + +#: plinth/modules/security/templates/security_report.html:60 +#, fuzzy +#| msgid "None" +msgid "No" +msgstr "ఏమీ లేదు" + #: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" @@ -5233,7 +5332,7 @@ msgstr "స్నాప్షాట్‌ సృష్టించబడిన msgid "Storage snapshots configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "చర్య లోపం:{0}{1}{2}" @@ -5461,11 +5560,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "కీని ప్రచురించండి" +#| msgid "Shared" +msgid "Share" +msgstr "పంచుకోబడ్డ" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5475,6 +5574,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "క్రింది డిస్కులు ఉపయోగంలో ఉన్నాయి:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "ఆరొహించు కోన" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5583,7 +5690,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "పంపిణీ ఫైల్ నిల్వ" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5591,7 +5698,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5639,11 +5746,11 @@ msgstr "కలిసియున్న పరిచయకర్తలు" msgid "Remove" msgstr "తొలగించు" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "టార్" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5656,40 +5763,40 @@ msgstr "" "టార్ ప్రాజెక్ట్ మీరు టార్ బ్రౌజర్ ను ఉపయోగించాలని సిఫార్సు చేస్తున్నారు." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "దాచిన టార్ సర్వీస్" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" @@ -5977,18 +6084,18 @@ msgstr "అప్గ్రేడ్ ప్రక్రియ ప్రారం msgid "Starting upgrade failed." msgstr "నవీకరణ ప్రారంభం విఫలమైంది." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "వినియోగదారులు మరియు సమూహాలు" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5996,24 +6103,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "అన్ని సేవలకు మరియు వ్యవస్థ అమరికలకు అనుమతించు" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "యూజర్ పేరు తీసుకోబడింది లేదా రిజర్వ్ చేయబడింది." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "అనుమతులు" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6022,59 +6129,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్‌వర్డ్ మార్పిడి విఫలం." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు" @@ -6095,7 +6208,7 @@ msgid "Create User" msgstr "వినియోగదారుని సృష్టించు" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "వినియోగదారుని తొలగించు" @@ -6160,29 +6273,29 @@ msgstr "మార్పులను భద్రపరుచు" msgid "User %(username)s created." msgstr "వినియోగదారి %(username)s సృష్టించబడ్డారు." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "వినియోగదారి %(username)s నావీకరించబడ్డాడు." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "వినియోగదారి మార్పు" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "వినియోగదారి {user} తొలగించబడ్డాడు." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వినియోగదారి తొలగింపు విఫలం." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "పాస్‌వర్డ్ మార్చు" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." @@ -6517,11 +6630,11 @@ msgstr "వెబ్ క్లయింట్ ని ప్రారంభిం msgid "Client Apps" msgstr "ఐ ర్ సి క్లయింట్ (Quassel)" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "అనువర్తనం ఆమోదింపబడలేదు" @@ -6529,6 +6642,17 @@ msgstr "అనువర్తనం ఆమోదింపబడలేదు" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "అధిభాగం: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "అధిభాగం: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "కీని ప్రచురించండి" + #~ msgid "OpenVPN server is running" #~ msgstr "అమర్చిపెటినా తెరిచినVPNనడుస్తుంది" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index fa1a133d8..0e6d14e28 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-08-08 00:22+0000\n" "Last-Translator: Mesut Akcan \n" "Language-Team: Turkish %(service_name)s is running." +msgid "Service {service_name} is running" +msgstr "%(service_name)s servisi çalışmaktadır." + +#: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "{kind} port {listen_address}:{port} dinleniyor" -#: plinth/action_utils.py:301 +#: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "{kind} port {port} dinleniyor" -#: plinth/action_utils.py:406 -#, python-brace-format -msgid "Access URL {url} on tcp{kind}" -msgstr "tcp{kind} üzerinden {url} bağlantısına eriş" - -#: plinth/action_utils.py:410 -#, python-brace-format -msgid "Access URL {url}" -msgstr "{url} bağlantısına eriş" - -#: plinth/action_utils.py:442 +#: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "{host}:{port} konumuna bağlan" -#: plinth/action_utils.py:444 +#: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "{host}:{port} konumuna bağlanılamadı" -#: plinth/context_processors.py:36 plinth/views.py:61 -msgid "FreedomBox" -msgstr "FreedomBox" - #: plinth/forms.py:39 msgid "Enable application" msgstr "Uygulamayı etkinleştir" @@ -109,6 +105,16 @@ msgstr "Web Sunucusu" msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Ağ Arayüzü (Plinth)" +#: plinth/modules/apache/components.py:135 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "tcp{kind} üzerinden {url} bağlantısına eriş" + +#: plinth/modules/apache/components.py:139 +#, python-brace-format +msgid "Access URL {url}" +msgstr "{url} bağlantısına eriş" + #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Servis Keşfi" @@ -361,7 +367,7 @@ msgid "Create Location" msgstr "Konum Oluştur" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:70 +#: plinth/modules/gitweb/views.py:69 msgid "Create Repository" msgstr "Depo oluştur" @@ -638,8 +644,8 @@ msgstr "Dinamik DNSSEC'i Etkinleştir" msgid "Enable Domain Name System Security Extensions" msgstr "Alan Adı Sistemi Güvenlik Uzantılarını Etkinleştir" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/bind/views.py:58 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:153 plinth/modules/shadowsocks/views.py:79 #: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Kurulum güncellendi" @@ -839,7 +845,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:50 msgid "File Sharing" msgstr "Dosya paylaşımı" @@ -882,21 +888,21 @@ msgstr "" msgid "coquelicot" msgstr "" -#: plinth/modules/coquelicot/views.py:59 +#: plinth/modules/coquelicot/views.py:58 #, fuzzy #| msgid "Password updated" msgid "Upload password updated" msgstr "Parola güncellendi" -#: plinth/modules/coquelicot/views.py:62 +#: plinth/modules/coquelicot/views.py:61 msgid "Failed to update upload password" msgstr "" -#: plinth/modules/coquelicot/views.py:70 +#: plinth/modules/coquelicot/views.py:69 msgid "Maximum file size updated" msgstr "Azami dosya boyutu güncellendi" -#: plinth/modules/coquelicot/views.py:73 +#: plinth/modules/coquelicot/views.py:72 msgid "Failed to update maximum file size" msgstr "" @@ -912,7 +918,7 @@ msgstr "" "Ağ zaman sunucusu, İnternet'teki sunucular ile sistem zamanını eş tutan bir " "programdır." -#: plinth/modules/datetime/__init__.py:99 +#: plinth/modules/datetime/__init__.py:97 msgid "Time synchronized to NTP server" msgstr "NTP sunucusuna senkronize edilen süre" @@ -932,12 +938,12 @@ msgstr "" msgid "-- no time zone set --" msgstr "-- hiçbir saat dilimi girilmemiştir --" -#: plinth/modules/datetime/views.py:65 +#: plinth/modules/datetime/views.py:64 #, python-brace-format msgid "Error setting time zone: {exception}" msgstr "Saat diliminin ayarlanmasında hata: {exception}" -#: plinth/modules/datetime/views.py:68 +#: plinth/modules/datetime/views.py:67 msgid "Time zone set" msgstr "Saat dilimi ayarlandı" @@ -991,7 +997,7 @@ msgstr "" "Sistem teşhis testi uygulamaların ve servislerin beklenildiği gibi " "çalıştıklarını teyit etmek için sisteminizde bir takım kontroller yapacaktır." -#: plinth/modules/diagnostics/diagnostics.py:69 +#: plinth/modules/diagnostics/diagnostics.py:65 msgid "Diagnostic Test" msgstr "Teşhis Testi" @@ -1010,21 +1016,19 @@ msgid "Results" msgstr "Sonuçlar" #: plinth/modules/diagnostics/templates/diagnostics.html:67 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format -msgid "Module: %(module)s" -msgstr "Öbek: %(module)s" +msgid "App: %(app_id)s" +msgstr "" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:25 +#: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" msgstr "Teşhis Sonuçları" -#: plinth/modules/diagnostics/templates/diagnostics_module.html:27 -#, python-format -msgid "Module: %(module_name)s" -msgstr "Öbek: %(module_name)s" - -#: plinth/modules/diagnostics/templates/diagnostics_module.html:32 -msgid "This module does not support diagnostics" +#: plinth/modules/diagnostics/templates/diagnostics_app.html:32 +#, fuzzy +#| msgid "This module does not support diagnostics" +msgid "This app does not support diagnostics" msgstr "Bu öbek teşhisleri desteklememektedir" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 @@ -1097,18 +1101,18 @@ msgstr "" msgid "Update setup" msgstr "Kurulumu güncelle" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 -#: plinth/modules/matrixsynapse/views.py:109 -#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:177 +#: plinth/modules/diaspora/views.py:93 plinth/modules/ejabberd/views.py:66 +#: plinth/modules/matrixsynapse/views.py:108 +#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:155 +#: plinth/modules/tor/views.py:156 plinth/views.py:175 msgid "Setting unchanged" msgstr "Ayar değiştirilmedi" -#: plinth/modules/diaspora/views.py:98 +#: plinth/modules/diaspora/views.py:97 msgid "User registrations enabled" msgstr "Kullanıcı kayıtları etkinleştirildi" -#: plinth/modules/diaspora/views.py:102 +#: plinth/modules/diaspora/views.py:101 msgid "User registrations disabled" msgstr "Kullanıcı kayıtları devre dışı bırakıldı" @@ -1348,7 +1352,7 @@ msgstr "" msgid "Last update" msgstr "Son güncelleme" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/__init__.py:59 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Hakkında" @@ -1496,11 +1500,11 @@ msgstr "" msgid "Configuration" msgstr "Yapılandırma" -#: plinth/modules/ejabberd/views.py:79 +#: plinth/modules/ejabberd/views.py:78 msgid "Message Archive Management enabled" msgstr "Mesaj Arşivi Yönetimi etkinleştirilmiştir" -#: plinth/modules/ejabberd/views.py:83 +#: plinth/modules/ejabberd/views.py:82 msgid "Message Archive Management disabled" msgstr "Mesaj Arşivi Yönetimi devre dışı bırakılmıştır" @@ -1520,6 +1524,23 @@ msgstr "" "etkinleştirip gerektiği gibi yapılandırmak İnternet'ten gelen güvenlik " "tehditlerini azaltır." +#: plinth/modules/firewall/components.py:130 +#, fuzzy, python-brace-format +#| msgid "Service %(service_name)s is not running." +msgid "Port {name} ({details}) available for internal networks" +msgstr "%(service_name)s servisi çalışmamaktadır." + +#: plinth/modules/firewall/components.py:138 +#, fuzzy, python-brace-format +#| msgid "Service %(service_name)s is not running." +msgid "Port {name} ({details}) available for external networks" +msgstr "%(service_name)s servisi çalışmamaktadır." + +#: plinth/modules/firewall/components.py:143 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + #: plinth/modules/firewall/templates/firewall.html:30 #, python-format msgid "" @@ -1621,15 +1642,15 @@ msgstr "Kuruluma Başla" msgid "Setup Complete" msgstr "Yapılandırma Tamamlandı" -#: plinth/modules/gitweb/__init__.py:43 plinth/modules/gitweb/manifest.py:28 +#: plinth/modules/gitweb/__init__.py:44 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:47 +#: plinth/modules/gitweb/__init__.py:48 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:50 +#: plinth/modules/gitweb/__init__.py:51 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1640,13 +1661,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:57 +#: plinth/modules/gitweb/__init__.py:58 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1765,83 +1786,83 @@ msgstr "Bu anlık daimi olarak silinsin mi?" msgid "Delete %(name)s" msgstr "%(name)s unsurunu sil" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Yapılandırma sırasında bir hata meydana geldi." -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Depo oluştur" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "Yapılandırma sırasında bir hata meydana geldi." -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} silindi." -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "Belgelendirme" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kullanım Kılavuzu" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "Belgelendirme ve SSS" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} hakkında" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Kılavuzu" @@ -2112,7 +2133,7 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "Anonimlik Ağı" @@ -2167,28 +2188,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "Anonim torrentler" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2247,7 +2268,6 @@ msgstr "Viki uygulamalarını görüntüle ve düzenle" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tür" @@ -2298,33 +2318,33 @@ msgstr "" "yorumları silecektir. Bu viki ya da blogu daimi olarak silmek istiyor " "musunuz?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} isimli viki oluşturuldu." -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Viki oluşturulamadı: {error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "{name} isimli blog oluşturuldu." -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog oluşturulamadı: {error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} silindi." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2393,15 +2413,15 @@ msgstr "" msgid "JavaScript license information" msgstr "JavaScript lisans bilgileri" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "Sertifikalar" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2417,7 +2437,7 @@ msgstr "" "bir sertifika otoritesi (Certificate Authority, CA) olan Let's Encrypt'e " "ispatlayarak yapar." -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2480,6 +2500,7 @@ msgstr "Tekrar edin" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "Sil" @@ -2503,7 +2524,7 @@ msgstr "" "Hiçbir alan yapılandırılmamış. Onlardan sertifika edinmek için alan " "yapılandırın." -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2512,30 +2533,30 @@ msgstr "" "{domain} alanı için sertifika başarılı bir şekilde iptal edildi. Bu işlemin " "başlaması biraz zaman alabilir." -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" "{domain} alanı için sertifikanın iptal edilmesi başarısız oldu: {error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "{domain} alanı için sertifika başarılı bir şekilde edinildi" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "{domain} alanı için sertifika edinilemedi: {error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} alanı için sertifika başarılı bir şekilde silindi" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} alanı için sertifikanın silinmesi başarısız oldu: {error}" @@ -2650,11 +2671,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "Herkese açık kayıt etkinleştirildi" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "Herkese açık kayıt devre dışı bırakıldı" @@ -2749,44 +2770,44 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "Parola güncellendi" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Public registration enabled" msgid "Public registrations enabled" msgstr "Herkese açık kayıt etkinleştirildi" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Public registration disabled" msgid "Public registrations disabled" msgstr "Herkese açık kayıt devre dışı bırakıldı" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite etkinleştirildi" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" msgstr "PageKite devre dışı" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2851,29 +2872,29 @@ msgstr "Adres" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "Azami oyuncu sayısı yapılandırması güncellendi" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "Yaratıcı kip kurulumu güncellendi" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "PVP kurulumu güncellendi" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "Zarar verme kurulumu güncellendi" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Mumble Ses ile Sohbet Sunucusu" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2884,7 +2905,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2920,7 +2941,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3143,15 +3164,15 @@ msgstr "Anahtar, anahtar sunucusuna yayınlandı." msgid "Error occurred while publishing key." msgstr "Anahtarın yayınlanmasında bir hata meydana geldi." -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "Ses ile Sohbet" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3159,7 +3180,7 @@ msgstr "" "Mumble, açık kaynak, düşük gecikmeli, şifreli, yüksek kaliteli sesle sohbet " "yazılımıdır." -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3189,7 +3210,7 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3232,7 +3253,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} üzerinde DNSSEC kullanılıyor" @@ -3487,96 +3508,96 @@ msgstr "WPA" msgid "Open" msgstr "Açık" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Ağ Bağlantıları" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "Bağlantı gösterilemez: bağlantı bulunamadı." -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "Bağlantı Verileri" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "Bağlantı düzenlenemez: bağlantı bulunamadı." -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "Bu tip bağlantı henüz anlaşılamamaktadır." -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "Bağlantıyı Düzenle" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "{name} bağlantısı etkinleştirildi." -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "Bağlantı etkinleştirilemedi: bağlantı bulunamadı." -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "{name} isimli bağlantı etkinleştirilemedi: hiçbir uygun cihaz mevcut değil." -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "{name} isimli bağlantı devre dışı bırakıldı." -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" "Bağlantının devre dışı bırakılması başarısız oldu: bağlantı bulunamadı." -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "Yakındaki Wi-Fi Ağları" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "Bağlantı Ekle" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "Yeni Jenerik Bağlantı Ekleniyor" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "Yeni Ethernet Bağlantısı Ekleniyor" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "Yeni PPPoE Bağlantısı Ekleniyor" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "Yeni Kablosuz Bağlantı Ekleniyor" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "{name} isimli bağlantı silindi." -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "Bağlantının silinmesi başarısız oldu: bağlantı bulunamadı." -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "Bağlantıyı Sil" @@ -3623,7 +3644,6 @@ msgid "yes" msgstr "evet" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Cihaz" @@ -3937,11 +3957,11 @@ msgstr "" msgid "Download my profile" msgstr "Profilimi indir" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "Kurulum tamamlandı." -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "Kurulum başarısız oldu." @@ -4307,15 +4327,15 @@ msgstr "" msgid "Shut Down Now" msgstr "Şimdi Kapat" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "Ağ Vekil Sunucusu" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4326,7 +4346,7 @@ msgstr "" "gelişmiş filtreleme özellikleri bulunan ve önbelleğe veri almayan bir ağ " "vekil sunucusudur. " -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4342,7 +4362,7 @@ msgstr "" "org/ veya http://p.p adresinde " "görebilirsiniz." -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} konumuna {proxy} vekili vasıtasıyla tcp{kind} üzerinden eriş" @@ -4515,7 +4535,7 @@ msgstr "" "isminizi girin. Arama düğmesine tıklamanız mevcut takvimleri ve adres " "defterlerini listeleyecektir." -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "Erişim izinleri yapılandırması güncellendi" @@ -4690,124 +4710,180 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps) \"daha az güvenli uygulamalara\" müsaade etmeniz gerekeceğini unutmayın." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "Paylaşılan" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Alan Adı" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "Bağlama Noktası" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Kullanılan" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "Mevcut Alanlar" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Shared" msgid "Share name" msgstr "Paylaşılan" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "Eylemler" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "Servis Ekle" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "Servis Ekle" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "Ana sayfa" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} silindi." -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Uygulamanın kurulmasında hata: {error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "Paylaşılan" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Uygulamanın kurulmasında hata: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Web Sunucusu" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4843,8 +4919,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "Kurulum güncellendi." @@ -4901,23 +4977,44 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "İsim" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "Block Sandbox" +msgid "Sandboxed" +msgstr "Blok Kum Havuzu" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "evet" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5346,7 +5443,7 @@ msgstr "Anlık oluşturuldu." msgid "Storage snapshots configuration updated" msgstr "Zaman Çizelgesi Anlıklarının yapılandırması güncellendi" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Eylem hatası: {0} [{1}] [{2}]" @@ -5579,11 +5676,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "Anahtarı Yayınla" +#| msgid "Shared" +msgid "Share" +msgstr "Paylaşılan" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5593,6 +5690,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "Aşağıdaki diskler kullanımdadır:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "Bağlama Noktası" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Bölüm Genişletme" @@ -5711,7 +5816,7 @@ msgstr "Tahoe-LAFS" msgid "Distributed File Storage" msgstr "Dağıtılmış Dosya Depolaması" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5723,7 +5828,7 @@ msgstr "" "bağımsız güvenlik kullanır. Bazı düğümler arızalansa bile dosyalarınız kalan " "düğümlerden alınabilir." -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5773,11 +5878,11 @@ msgstr "Bağlı tanıtıcılar" msgid "Remove" msgstr "Kaldır" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5791,40 +5896,40 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html\">Tor " "Tarayıcısını kullanmanızı tavsiye eder." -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Gizli Servisi" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "Socks5 Vekil Sunucusu" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor Köprü Aktarması" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor geçit portu mevcuttur" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 taşıma kayıtlıdır" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 taşıma kayıtlıdır" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "{url} bağlantısına tcp{kind} üzerinden Tor vasıtasıyla eriş" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "tcp{kind} üzerinden {url} konumunda Tor kullanımını teyit et" @@ -6140,18 +6245,18 @@ msgstr "Yükseltme süreci başlamıştır." msgid "Starting upgrade failed." msgstr "Yükseltmenin başlatılması başarısız oldu." -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "Kullanıcılar ve Gruplar" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6159,24 +6264,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "\"{search_item}\" LDAP unsurunu kontrol et" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "Tüm servislere ve sistem ayarlarına erişim" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "Kullanıcı ismi zaten alınmış ya da ayrılmıştır." -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "İzinler" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6190,20 +6295,20 @@ msgstr "" "servislere giriş yapabilecektir. Aynı zamanda sisteme SSH aracılığıyla giriş " "yapıp yönetici izinlerine (sudo) erişebileceklerdir." -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "LDAP kullanıcısı oluşturması başarısız oldu." -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "{group} grubuna yeni kullanıcı ilâve edilmesi başarısız oldu." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6214,39 +6319,45 @@ msgstr "" "çok anahtar girebilirsiniz, her anahtarı yeni bir satırda girin. Boş " "satırlar ve # ile başlayan satırlar görmezden gelinecektir." -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "LDAP kullanıcısının tekrar adlandırılması başarısız oldu." -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "Kullanıcının gruptan kaldırılması başarısız oldu." -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "Kullanıcının gruba eklenmesi başarısız oldu." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "SSH anahtarları ayarlanamadı." -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "Kullanıcının gruba eklenmesi başarısız oldu." + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "LDAP kullanıcı parolasının değiştirilmesi başarısız oldu." -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "Yeni kullanıcının admin (yönetici) grubuna eklenmesi başarısız oldu." -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "Konsol erişiminin kısıtlanması başarısız oldu." -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "Kullanıcı hesabı oluşturuldu, artık giriş yaptınız" @@ -6267,7 +6378,7 @@ msgid "Create User" msgstr "Kullanıcı Oluştur" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "Kullanıcıyı Sil" @@ -6333,29 +6444,29 @@ msgstr "Değişiklikleri Kaydet" msgid "User %(username)s created." msgstr "%(username)s kullanıcısı oluşturuldu." -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "%(username)s kullanıcısı güncellendi." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "Kullanıcıyı Düzenle" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "{user} kullanıcısı silindi." -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "LDAP kullanıcısının silinmesi başarısız oldu." -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "Parolayı Değiştir" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "Parola başarılı bir şekilde değiştirildi." @@ -6712,11 +6823,11 @@ msgstr "Ağ istemcisini başlat" msgid "Client Apps" msgstr "İstemci Uygulamalar" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "Uygulama etkinleştirildi" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "Uygulama devre dışı bırakıldı" @@ -6724,6 +6835,17 @@ msgstr "Uygulama devre dışı bırakıldı" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "Öbek: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Öbek: %(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "Anahtarı Yayınla" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index a7e8aef17..811a8e1bf 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-01-04 17:06+0000\n" "Last-Translator: prolinux ukraine \n" "Language-Team: Ukrainian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1608,81 +1626,81 @@ msgstr "Остаточно видалити цей архів?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Remove Repository" msgid "Edit repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1903,7 +1921,7 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 msgid "Anonymity Network" msgstr "" @@ -1950,28 +1968,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2008,7 +2026,6 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2056,33 +2073,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Архів видалено." -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2141,15 +2158,15 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2159,7 +2176,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2217,6 +2234,7 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "" @@ -2235,36 +2253,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2352,11 +2370,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 msgid "Public registration disabled" msgstr "" @@ -2422,36 +2440,36 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 msgid "Private mode disabled" msgstr "" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2506,27 +2524,27 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 msgid "Simple Media Server" msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2537,7 +2555,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2573,7 +2591,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -2768,21 +2786,21 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2809,7 +2827,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 msgid "SuperUser password successfully updated." msgstr "" @@ -2850,7 +2868,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3076,94 +3094,94 @@ msgstr "" msgid "Open" msgstr "" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "" @@ -3210,7 +3228,6 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -3487,11 +3504,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "" @@ -3798,22 +3815,22 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3823,7 +3840,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3949,7 +3966,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "" @@ -4066,116 +4083,162 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "Доменне ім’я" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 msgid "Share name" msgstr "" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Encryption" msgid "Action" msgstr "Шифрування" -#: plinth/modules/samba/views.py:75 -msgid "Share enabled." +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:80 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" -msgid "Error enabling share: {error_message}" -msgstr "Помилка при встановлені застосунку: {error}" +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 +msgid "Home Share" +msgstr "" #: plinth/modules/samba/views.py:96 -msgid "Share disabled." +msgid "Share enabled." msgstr "" #: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" +msgid "Error enabling share: {error_message}" +msgstr "Помилка при встановлені застосунку: {error}" + +#: plinth/modules/samba/views.py:106 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:111 +#, fuzzy, python-brace-format +#| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "Помилка при встановлені застосунку: {error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4207,8 +4270,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "" @@ -4254,23 +4317,40 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "Ім’я" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -4625,7 +4705,7 @@ msgstr "" msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4832,10 +4912,10 @@ msgid "Subdirectory (optional)" msgstr "" #: plinth/modules/storage/forms.py:154 -msgid "Samba share" +msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -4843,6 +4923,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -4939,7 +5027,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4947,7 +5035,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4990,11 +5078,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5003,36 +5091,36 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5276,18 +5364,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5295,24 +5383,24 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5321,59 +5409,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "" @@ -5394,7 +5486,7 @@ msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "" @@ -5455,29 +5547,29 @@ msgstr "" msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "" @@ -5794,11 +5886,11 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "" @@ -5806,6 +5898,12 @@ msgstr "" msgid "Gujarati" msgstr "" +#~ msgid "Module: %(module)s" +#~ msgstr "Модуль: %(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "Модуль: %(module_name)s" + #~ msgid "Create" #~ msgstr "Створити" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 048ce7cb3..f72cd91db 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-16 17:58-0500\n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" "PO-Revision-Date: 2019-09-13 05:23+0000\n" "Last-Translator: Anxin YI <2732146152@qq.com>\n" "Language-Team: Chinese (Simplified) Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:61 +#: plinth/modules/gitweb/__init__.py:62 msgid "Read-write access to Git repositories" msgstr "" @@ -1708,83 +1729,83 @@ msgstr "永久删除此快照?" msgid "Delete %(name)s" msgstr "删除 %(name)s" -#: plinth/modules/gitweb/views.py:65 +#: plinth/modules/gitweb/views.py:64 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:87 +#: plinth/modules/gitweb/views.py:86 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "在配置过程中出错。" -#: plinth/modules/gitweb/views.py:100 +#: plinth/modules/gitweb/views.py:99 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:105 +#: plinth/modules/gitweb/views.py:104 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 -#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:178 msgid "An error occurred during configuration." msgstr "在配置过程中出错。" -#: plinth/modules/gitweb/views.py:154 +#: plinth/modules/gitweb/views.py:153 #, python-brace-format msgid "{name} deleted." msgstr "{name} 已删除。" -#: plinth/modules/gitweb/views.py:158 +#: plinth/modules/gitweb/views.py:157 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/help/help.py:50 +#: plinth/modules/help/__init__.py:40 msgid "Documentation" msgstr "文档" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/help/__init__.py:43 plinth/modules/networks/forms.py:63 #: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "手册" -#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 +#: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 +#: plinth/modules/help/__init__.py:51 plinth/modules/help/help.py:52 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 +#: plinth/modules/help/__init__.py:55 plinth/modules/help/help.py:46 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:89 +#: plinth/modules/help/help.py:40 msgid "Documentation and FAQ" msgstr "文档和 FAQ" -#: plinth/modules/help/help.py:115 +#: plinth/modules/help/help.py:66 #, python-brace-format msgid "About {box_name}" msgstr "关于 {box_name}" -#: plinth/modules/help/help.py:150 +#: plinth/modules/help/help.py:101 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} 手册" @@ -2044,7 +2065,7 @@ msgstr "提交日志报告前,请从日志中删除任何密码和其他个人 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:49 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" @@ -2101,28 +2122,28 @@ msgstr "" msgid "Anonymous torrents" msgstr "" -#: plinth/modules/i2p/views.py:89 +#: plinth/modules/i2p/views.py:88 msgid "I2P Proxies and Tunnels" msgstr "" -#: plinth/modules/i2p/views.py:92 +#: plinth/modules/i2p/views.py:91 msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -#: plinth/modules/i2p/views.py:95 +#: plinth/modules/i2p/views.py:94 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" -#: plinth/modules/i2p/views.py:104 +#: plinth/modules/i2p/views.py:103 msgid "Anonymous Torrents" msgstr "" -#: plinth/modules/i2p/views.py:107 +#: plinth/modules/i2p/views.py:106 msgid "" "I2P provides an application to download files anonymously in a peer-to-peer " "network. Download files by adding torrents or create a new torrent to share " @@ -2172,7 +2193,6 @@ msgstr "服务和应用程序" #: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "类型" @@ -2221,33 +2241,33 @@ msgid "" msgstr "" "此操作将删除所有文章、 网页和评论包括修订历史记录。 永久删除此 wiki 或博客吗?" -#: plinth/modules/ikiwiki/views.py:97 +#: plinth/modules/ikiwiki/views.py:96 #, python-brace-format msgid "Created wiki {name}." msgstr "创建 wiki {name}。" -#: plinth/modules/ikiwiki/views.py:100 +#: plinth/modules/ikiwiki/views.py:99 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "不能创建 wiki:{error}" -#: plinth/modules/ikiwiki/views.py:110 +#: plinth/modules/ikiwiki/views.py:109 #, python-brace-format msgid "Created blog {name}." msgstr "已创建的博客 {name}。" -#: plinth/modules/ikiwiki/views.py:113 +#: plinth/modules/ikiwiki/views.py:112 #, python-brace-format msgid "Could not create blog: {error}" msgstr "不能创建博客:{error}" -#: plinth/modules/ikiwiki/views.py:128 +#: plinth/modules/ikiwiki/views.py:127 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} 已删除。" -#: plinth/modules/ikiwiki/views.py:132 +#: plinth/modules/ikiwiki/views.py:131 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2325,19 +2345,19 @@ msgstr "JSXC 是一个 XMPP 网页客户端,主要用于连接本地 XMPP 服 msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:47 +#: plinth/modules/letsencrypt/__init__.py:48 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "证书(Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:49 +#: plinth/modules/letsencrypt/__init__.py:50 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "证书状态" -#: plinth/modules/letsencrypt/__init__.py:53 +#: plinth/modules/letsencrypt/__init__.py:54 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2350,7 +2370,7 @@ msgstr "" "动获取和设置每个可用域名的数字证书。它通过向 Let's Encrypt 证明自己是一个域名" "的所有者。Let's Encrypt 是一个证书颁发机构(CA)。" -#: plinth/modules/letsencrypt/__init__.py:59 +#: plinth/modules/letsencrypt/__init__.py:60 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2417,6 +2437,7 @@ msgstr "重新获取" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 +#: plinth/modules/samba/templates/samba.html:142 msgid "Delete" msgstr "删除" @@ -2438,7 +2459,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "没有配置域名。配置域名可以为它们获得相应的证书。" -#: plinth/modules/letsencrypt/views.py:57 +#: plinth/modules/letsencrypt/views.py:58 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2446,30 +2467,30 @@ msgid "" "moments to take effect." msgstr "成功为域名 {domain} 吊销证书" -#: plinth/modules/letsencrypt/views.py:63 +#: plinth/modules/letsencrypt/views.py:64 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "无法为 {domain} 撤销证书:{error}" -#: plinth/modules/letsencrypt/views.py:76 -#: plinth/modules/letsencrypt/views.py:93 +#: plinth/modules/letsencrypt/views.py:77 +#: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "为域名 {domain} 成功获得证书" -#: plinth/modules/letsencrypt/views.py:81 -#: plinth/modules/letsencrypt/views.py:98 +#: plinth/modules/letsencrypt/views.py:82 +#: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "未能为域名 {domain} 获取证书:{error}" -#: plinth/modules/letsencrypt/views.py:110 +#: plinth/modules/letsencrypt/views.py:111 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "成功为域名 {domain} 吊销证书" -#: plinth/modules/letsencrypt/views.py:115 +#: plinth/modules/letsencrypt/views.py:116 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2573,13 +2594,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:122 +#: plinth/modules/matrixsynapse/views.py:121 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "应用程序已启用" -#: plinth/modules/matrixsynapse/views.py:127 +#: plinth/modules/matrixsynapse/views.py:126 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2653,42 +2674,42 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:72 +#: plinth/modules/mediawiki/views.py:71 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "密码" -#: plinth/modules/mediawiki/views.py:90 +#: plinth/modules/mediawiki/views.py:89 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "应用程序已启用" -#: plinth/modules/mediawiki/views.py:99 +#: plinth/modules/mediawiki/views.py:98 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "应用程序已禁用" -#: plinth/modules/mediawiki/views.py:108 +#: plinth/modules/mediawiki/views.py:107 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite 已启用" -#: plinth/modules/mediawiki/views.py:111 +#: plinth/modules/mediawiki/views.py:110 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" msgstr "PageKite 已禁用" -#: plinth/modules/minetest/__init__.py:51 +#: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:55 +#: plinth/modules/minetest/__init__.py:54 #, fuzzy #| msgid "" #| "Block Sandbox \n" @@ -2698,7 +2719,7 @@ msgstr "" "方块沙盒\n" "(Minetest)" -#: plinth/modules/minetest/__init__.py:59 +#: plinth/modules/minetest/__init__.py:58 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2773,29 +2794,29 @@ msgstr "地址" msgid "Port" msgstr "端口" -#: plinth/modules/minetest/views.py:71 +#: plinth/modules/minetest/views.py:70 msgid "Maximum players configuration updated" msgstr "最大玩家配置已更新" -#: plinth/modules/minetest/views.py:78 +#: plinth/modules/minetest/views.py:77 msgid "Creative mode configuration updated" msgstr "创意模式配置已更新" -#: plinth/modules/minetest/views.py:84 +#: plinth/modules/minetest/views.py:83 msgid "PVP configuration updated" msgstr "玩家对战(PVP)配置已更新" -#: plinth/modules/minetest/views.py:90 +#: plinth/modules/minetest/views.py:89 msgid "Damage configuration updated" msgstr "伤害配置已更新" -#: plinth/modules/minidlna/__init__.py:43 +#: plinth/modules/minidlna/__init__.py:41 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" msgstr "Mumble 语音聊天服务器" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:44 msgid "" "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 " @@ -2806,7 +2827,7 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:58 +#: plinth/modules/minidlna/__init__.py:56 msgid "Media streaming server" msgstr "" @@ -2842,7 +2863,7 @@ msgstr "" msgid "Specified directory does not exist." msgstr "" -#: plinth/modules/minidlna/views.py:63 +#: plinth/modules/minidlna/views.py:62 msgid "Updated media directory" msgstr "" @@ -3058,11 +3079,11 @@ msgstr "已发布到密钥服务器的密钥。" msgid "Error occurred while publishing key." msgstr "发布密钥时出现错误。" -#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:33 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:38 +#: plinth/modules/mumble/__init__.py:37 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3072,13 +3093,13 @@ msgstr "" "语音聊天\n" "(Mumble)" -#: plinth/modules/mumble/__init__.py:45 +#: plinth/modules/mumble/__init__.py:44 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "Mumble 是一个开放源码的低延迟、 加密、 高品质语音聊天软件。" -#: plinth/modules/mumble/__init__.py:47 +#: plinth/modules/mumble/__init__.py:46 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3107,7 +3128,7 @@ msgstr "" msgid "Mumblefly" msgstr "" -#: plinth/modules/mumble/views.py:57 +#: plinth/modules/mumble/views.py:50 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3150,7 +3171,7 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:151 +#: plinth/modules/networks/__init__.py:148 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "在 IPv{kind} 上使用 DNSSEC" @@ -3388,94 +3409,94 @@ msgstr "WPA" msgid "Open" msgstr "打开" -#: plinth/modules/networks/networks.py:42 +#: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "网络连接" -#: plinth/modules/networks/networks.py:58 +#: plinth/modules/networks/networks.py:59 msgid "Cannot show connection: Connection not found." msgstr "不能显示连接: 找不到连接。" -#: plinth/modules/networks/networks.py:93 +#: plinth/modules/networks/networks.py:94 msgid "Connection Information" msgstr "连接信息" -#: plinth/modules/networks/networks.py:107 +#: plinth/modules/networks/networks.py:108 msgid "Cannot edit connection: Connection not found." msgstr "不能编辑连接: 找不到连接。" -#: plinth/modules/networks/networks.py:113 +#: plinth/modules/networks/networks.py:114 msgid "This type of connection is not yet understood." msgstr "这种类型的连接尚没有引入。" -#: plinth/modules/networks/networks.py:135 -#: plinth/modules/networks/networks.py:219 +#: plinth/modules/networks/networks.py:136 +#: plinth/modules/networks/networks.py:220 #: plinth/modules/networks/templates/connections_edit.html:35 msgid "Edit Connection" msgstr "编辑连接" -#: plinth/modules/networks/networks.py:231 +#: plinth/modules/networks/networks.py:232 #, python-brace-format msgid "Activated connection {name}." msgstr "激活的连接 {name}。" -#: plinth/modules/networks/networks.py:235 +#: plinth/modules/networks/networks.py:236 msgid "Failed to activate connection: Connection not found." msgstr "未能激活连接: 找不到连接。" -#: plinth/modules/networks/networks.py:241 +#: plinth/modules/networks/networks.py:242 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "未能激活连接 {name}: 没有合适的设备是可用。" -#: plinth/modules/networks/networks.py:254 +#: plinth/modules/networks/networks.py:255 #, python-brace-format msgid "Deactivated connection {name}." msgstr "停用的连接 {name}。" -#: plinth/modules/networks/networks.py:258 +#: plinth/modules/networks/networks.py:259 msgid "Failed to de-activate connection: Connection not found." msgstr "无法取消激活连接: 找不到连接。" -#: plinth/modules/networks/networks.py:268 +#: plinth/modules/networks/networks.py:269 #: plinth/modules/networks/templates/connections_list.html:63 #: plinth/modules/networks/templates/connections_list.html:65 msgid "Nearby Wi-Fi Networks" msgstr "附近的无线网络" -#: plinth/modules/networks/networks.py:292 +#: plinth/modules/networks/networks.py:293 #: plinth/modules/networks/templates/connections_list.html:68 #: plinth/modules/networks/templates/connections_list.html:70 msgid "Add Connection" msgstr "添加连接" -#: plinth/modules/networks/networks.py:310 +#: plinth/modules/networks/networks.py:311 msgid "Adding New Generic Connection" msgstr "添加新的常规连接" -#: plinth/modules/networks/networks.py:328 +#: plinth/modules/networks/networks.py:329 msgid "Adding New Ethernet Connection" msgstr "添加新的以太网连接" -#: plinth/modules/networks/networks.py:346 +#: plinth/modules/networks/networks.py:347 msgid "Adding New PPPoE Connection" msgstr "添加新的 PPPoE 连接" -#: plinth/modules/networks/networks.py:381 +#: plinth/modules/networks/networks.py:382 msgid "Adding New Wi-Fi Connection" msgstr "添加新的 Wi-Fi 连接" -#: plinth/modules/networks/networks.py:396 +#: plinth/modules/networks/networks.py:397 #, python-brace-format msgid "Connection {name} deleted." msgstr "连接 {name} 已删除。" -#: plinth/modules/networks/networks.py:400 -#: plinth/modules/networks/networks.py:410 +#: plinth/modules/networks/networks.py:401 +#: plinth/modules/networks/networks.py:411 msgid "Failed to delete connection: Connection not found." msgstr "删除连接失败: 找不到连接。" -#: plinth/modules/networks/networks.py:415 +#: plinth/modules/networks/networks.py:416 #: plinth/modules/networks/templates/connections_delete.html:26 msgid "Delete Connection" msgstr "删除连接" @@ -3522,7 +3543,6 @@ msgid "yes" msgstr "是的" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/samba/templates/samba.html:49 #: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "设备" @@ -3828,11 +3848,11 @@ msgstr "配置文件是特定于每个 %(box_name)s 用户的。请保持其私 msgid "Download my profile" msgstr "下载我的配置文件" -#: plinth/modules/openvpn/views.py:132 +#: plinth/modules/openvpn/views.py:133 msgid "Setup completed." msgstr "安装已完成。" -#: plinth/modules/openvpn/views.py:134 +#: plinth/modules/openvpn/views.py:135 msgid "Setup failed." msgstr "安装失败。" @@ -4174,19 +4194,19 @@ msgstr "" msgid "Shut Down Now" msgstr "现在关闭" -#: plinth/modules/privoxy/__init__.py:42 +#: plinth/modules/privoxy/__init__.py:43 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "启用 Privoxy" -#: plinth/modules/privoxy/__init__.py:46 +#: plinth/modules/privoxy/__init__.py:47 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy 网页代理" -#: plinth/modules/privoxy/__init__.py:49 +#: plinth/modules/privoxy/__init__.py:50 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4195,7 +4215,7 @@ msgstr "" "Privoxy 是一个非缓存Web代理,具有高级过滤功能,用于增强隐私,修改网页数据和 " "HTTP 标头,控制访问,以及删除广告和其他令人讨厌的互联网垃圾。" -#: plinth/modules/privoxy/__init__.py:54 +#: plinth/modules/privoxy/__init__.py:55 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4209,7 +4229,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ 或 http://p.p 中查看其配置详细信息和文档" -#: plinth/modules/privoxy/__init__.py:145 +#: plinth/modules/privoxy/__init__.py:141 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" @@ -4366,7 +4386,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:57 +#: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" msgstr "访问权配置已更新" @@ -4540,124 +4560,180 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)中启用“安全性较低的应用”。" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:46 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:50 +#: plinth/modules/samba/__init__.py:53 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:53 +#: plinth/modules/samba/__init__.py:56 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " -"{hostname} shares are open to everyone in your local network and are " -"accessible under Network section in the file manager on your computer." +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:59 -msgid "Access shared folders from inside the server" +#: plinth/modules/samba/__init__.py:61 +msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/templates/samba.html:38 -msgid "Select disks for sharing" -msgstr "" - -#: plinth/modules/samba/templates/samba.html:40 +#: plinth/modules/samba/__init__.py:62 msgid "" -"Note: only specially created directory will be shared on selected disks, not " -"the whole disk." +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." msgstr "" -#: plinth/modules/samba/templates/samba.html:50 -#: plinth/modules/storage/templates/storage.html:41 -msgid "Label" +#: plinth/modules/samba/__init__.py:64 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." msgstr "" +#: plinth/modules/samba/__init__.py:68 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:39 +#: plinth/modules/samba/templates/samba.html:50 +#, fuzzy +#| msgid "Shared" +msgid "Shares" +msgstr "共享" + +#: plinth/modules/samba/templates/samba.html:41 +msgid "" +"Note: only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:49 +#, fuzzy +#| msgid "Domain Name" +msgid "Disk Name" +msgstr "域名" + #: plinth/modules/samba/templates/samba.html:51 -#: plinth/modules/storage/templates/storage.html:42 -msgid "Mount Point" -msgstr "挂载点" - -#: plinth/modules/samba/templates/samba.html:53 #: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "已使用" -#: plinth/modules/samba/templates/samba.html:76 +#: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" msgstr "" -#: plinth/modules/samba/templates/samba.html:108 -msgid "Shares configured but the disk is not available" +#: plinth/modules/samba/templates/samba.html:103 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." msgstr "" -#: plinth/modules/samba/templates/samba.html:110 -msgid "If the disk is plugged back in, sharing will be automatically enabled." +#: plinth/modules/samba/templates/samba.html:109 +msgid "Users who can currently access group and home shares" msgstr "" -#: plinth/modules/samba/templates/samba.html:115 +#: plinth/modules/samba/templates/samba.html:113 +msgid "" +"Users who need to re-enter their password on the password change page to " +"access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:118 +#, fuzzy +#| msgid "Available Domains" +msgid "Unavailable Shares" +msgstr "可用域名" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "" +"Shares that are configured but the disk is not available. If the disk is " +"plugged back in, sharing will be automatically enabled." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:128 #, fuzzy #| msgid "Shared" msgid "Share name" msgstr "共享" -#: plinth/modules/samba/templates/samba.html:116 +#: plinth/modules/samba/templates/samba.html:129 #, fuzzy #| msgid "Actions" msgid "Action" msgstr "行动" -#: plinth/modules/samba/views.py:75 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#, fuzzy +#| msgid "Add Service" +msgid "Open Share" +msgstr "添加服务" + +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#, fuzzy +#| msgid "Add Service" +msgid "Group Share" +msgstr "添加服务" + +#: plinth/modules/samba/views.py:63 +#, fuzzy +#| msgid "Homepage" +msgid "Home Share" +msgstr "主页" + +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} 已删除。" -#: plinth/modules/samba/views.py:80 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/samba/views.py:96 +#: plinth/modules/samba/views.py:106 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "共享" -#: plinth/modules/samba/views.py:101 +#: plinth/modules/samba/views.py:111 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 +#: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:44 +#: plinth/modules/searx/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Web 服务器" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:48 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:53 +#: plinth/modules/searx/__init__.py:54 msgid "Search the web" msgstr "" @@ -4693,8 +4769,8 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 -#: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 +#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176 msgid "Configuration updated." msgstr "配置已更新。" @@ -4746,23 +4822,48 @@ msgstr "" #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " -"of security vulnerabilities for each installed app." +"of security vulnerabilities for each installed app. It also lists whether " +"each service is using sandboxing features." msgstr "" -#: plinth/modules/security/templates/security_report.html:41 +#: plinth/modules/security/templates/security_report.html:42 #, fuzzy #| msgid "Name" msgid "App Name" msgstr "名称" -#: plinth/modules/security/templates/security_report.html:42 +#: plinth/modules/security/templates/security_report.html:43 msgid "Current Vulnerabilities" msgstr "" -#: plinth/modules/security/templates/security_report.html:43 +#: plinth/modules/security/templates/security_report.html:44 msgid "Past Vulnerabilities" msgstr "" +#: plinth/modules/security/templates/security_report.html:45 +#, fuzzy +#| msgid "" +#| "Block Sandbox \n" +#| " (Minetest)" +msgid "Sandboxed" +msgstr "" +"方块沙盒\n" +"(Minetest)" + +#: plinth/modules/security/templates/security_report.html:56 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "是的" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "No" +msgstr "" + #: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" @@ -5185,7 +5286,7 @@ msgstr "创建快照。" msgid "Storage snapshots configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:79 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "操作错误:{0} [{1}] [{2}]" @@ -5422,11 +5523,11 @@ msgstr "" #: plinth/modules/storage/forms.py:154 #, fuzzy -#| msgid "Publish Key" -msgid "Samba share" -msgstr "发布密钥" +#| msgid "Shared" +msgid "Share" +msgstr "共享" -#: plinth/modules/storage/forms.py:155 +#: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" msgstr "" @@ -5436,6 +5537,14 @@ msgstr "" msgid "The following storage devices are in use:" msgstr "正在使用以下磁盘:" +#: plinth/modules/storage/templates/storage.html:41 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:42 +msgid "Mount Point" +msgstr "挂载点" + #: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" @@ -5538,7 +5647,7 @@ msgstr "" msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:121 +#: plinth/modules/tahoe/__init__.py:134 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5546,7 +5655,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:126 +#: plinth/modules/tahoe/__init__.py:139 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5593,11 +5702,11 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:46 +#: plinth/modules/tor/__init__.py:47 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:51 +#: plinth/modules/tor/__init__.py:52 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5610,38 +5719,38 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html.en\">Tor浏览器" "。" -#: plinth/modules/tor/__init__.py:82 +#: plinth/modules/tor/__init__.py:83 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "隐藏的 Tor 服务" -#: plinth/modules/tor/__init__.py:86 +#: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:90 +#: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:167 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:177 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:187 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:228 +#: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:239 +#: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" @@ -5935,18 +6044,18 @@ msgstr "升级过程开始。" msgid "Starting upgrade failed." msgstr "开始升级失败。" -#: plinth/modules/users/__init__.py:48 +#: plinth/modules/users/__init__.py:51 msgid "Users and Groups" msgstr "用户和组" -#: plinth/modules/users/__init__.py:51 +#: plinth/modules/users/__init__.py:54 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:56 +#: plinth/modules/users/__init__.py:59 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5954,26 +6063,26 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:125 +#: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" -#: plinth/modules/users/forms.py:41 +#: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:55 +#: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." msgstr "用户名已经占用或保留。" -#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 +#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "Transmission BitTorrent" -#: plinth/modules/users/forms.py:90 +#: plinth/modules/users/forms.py:89 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5985,20 +6094,20 @@ msgstr "" "支持单一登录的服务。

管理员(admin)组中的用户将能够登录所有服务。他" "们还可以通过 SSH 登录到系统并具有管理权限(sudo)。" -#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." msgstr "创建 LDAP 用户失败。" -#: plinth/modules/users/forms.py:136 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "未能将新用户添加到 {group}。" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:150 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6007,39 +6116,45 @@ msgstr "" "设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行" "一个。将忽略空行和以 # 开头的行。" -#: plinth/modules/users/forms.py:231 +#: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." msgstr "重命名 LDAP 用户失败。" -#: plinth/modules/users/forms.py:243 +#: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." msgstr "无法从组中删除用户。" -#: plinth/modules/users/forms.py:254 +#: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." msgstr "不能设置 SSH 密钥。" -#: plinth/modules/users/forms.py:271 +#: plinth/modules/users/forms.py:277 +#, fuzzy +#| msgid "Failed to add user to group." +msgid "Failed to change user status." +msgstr "无法将用户添加到组。" + +#: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." msgstr "更改 LDAP 用户密码失败。" -#: plinth/modules/users/forms.py:334 +#: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." msgstr "未能将新用户添加到管理员组。" -#: plinth/modules/users/forms.py:351 +#: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." msgstr "限制命令行访问失败。" -#: plinth/modules/users/forms.py:363 +#: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" msgstr "用户帐户已创建,您现在可以登录" @@ -6060,7 +6175,7 @@ msgid "Create User" msgstr "创建用户" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:140 +#: plinth/modules/users/views.py:139 msgid "Delete User" msgstr "删除用户" @@ -6123,29 +6238,29 @@ msgstr "保存更改" msgid "User %(username)s created." msgstr "用户 %(username)s 已创建。" -#: plinth/modules/users/views.py:94 +#: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." msgstr "用户 %(username)s 已更新。" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 msgid "Edit User" msgstr "编辑用户" -#: plinth/modules/users/views.py:150 +#: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." msgstr "用户 {user} 已删除。" -#: plinth/modules/users/views.py:157 +#: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." msgstr "删除 LDAP 用户失败。" -#: plinth/modules/users/views.py:166 +#: plinth/modules/users/views.py:165 msgid "Change Password" msgstr "更改密码" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Password changed successfully." msgstr "已成功更改密码。" @@ -6516,11 +6631,11 @@ msgstr "启动 web 客户端" msgid "Client Apps" msgstr "Quassel IRC 客户端" -#: plinth/views.py:181 +#: plinth/views.py:179 msgid "Application enabled" msgstr "应用程序已启用" -#: plinth/views.py:184 +#: plinth/views.py:182 msgid "Application disabled" msgstr "应用程序已禁用" @@ -6528,6 +6643,17 @@ msgstr "应用程序已禁用" msgid "Gujarati" msgstr "古吉拉特语" +#~ msgid "Module: %(module)s" +#~ msgstr "模块:%(module)s" + +#~ msgid "Module: %(module_name)s" +#~ msgstr "模块:%(module_name)s" + +#, fuzzy +#~| msgid "Publish Key" +#~ msgid "Samba share" +#~ msgstr "发布密钥" + #~ msgid "" #~ "Directory where downloads are saved. If you change the default " #~ "directory, ensure that the new directory exists and is writable by " From b4a0c7e908d0bfa7ee1b158de6780a2a10a28f5a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 30 Dec 2019 20:52:28 -0500 Subject: [PATCH 41/43] debian: Update Dutch debconf translation (Closes: #947136) Thanks to Frans Spiesschaert for the patch. Signed-off-by: James Valleroy --- debian/po/nl.po | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/debian/po/nl.po b/debian/po/nl.po index 2e6ce2d8c..47498e3d8 100644 --- a/debian/po/nl.po +++ b/debian/po/nl.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: plinth_0.34.0\n" +"Project-Id-Version: plinth_19.21\n" "Report-Msgid-Bugs-To: plinth@packages.debian.org\n" "POT-Creation-Date: 2019-11-18 18:11-0500\n" -"PO-Revision-Date: 2018-07-31 16:32+0200\n" +"PO-Revision-Date: 2019-12-02 21:04+0100\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Gtranslator 2.91.7\n" +"X-Generator: Poedit 2.2.1\n" #. Type: note #. Description @@ -28,17 +28,12 @@ msgstr "Geheime code voor de initiële wizard van FreedomBox - ${secret}" #. Type: note #. Description #: ../templates:1001 -#, fuzzy -#| msgid "" -#| "Please save this string. You will be asked to enter this in the first " -#| "screen after you launch the FreedomBox interface. In case you lose it, " -#| "you can find it in the file /var/lib/plinth/firstboot-wizard-secret." msgid "" "Please note down the above secret. You will be asked to enter this in the " "first screen after you launch the FreedomBox web interface. In case you lose " "it, you can retrieve it by running the following command:" msgstr "" -"Bewaar deze tekenreeks. Er zal u gevraagd worden om ze in te voeren in het " -"openingsscherm bij de eerste opstart van de FreedomBox-interface. In geval u " -"ze kwijtraakt kunt u ze terugvinden in het bestand /var/lib/plinth/firstboot-" -"wizard-secret." +"Noteer bovenstaande geheime code. Er zal u gevraagd worden om ze in het " +"openingsscherm in te voeren wanneer u de FreedomBox-interface opstart. In " +"geval u ze kwijtraakt, kunt u ze terughalen door het volgende commando uit " +"te voeren:" From 86ccf5b2eda2d22c48ccab7d9cb0e155e84c51bf Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 30 Dec 2019 21:17:14 -0500 Subject: [PATCH 42/43] doc: Fetch latest manual Signed-off-by: James Valleroy --- doc/manual/en/Apache_userdir.raw.xml | 2 +- doc/manual/en/Backups.raw.xml | 2 +- doc/manual/en/Cockpit.raw.xml | 2 +- doc/manual/en/Configure.raw.xml | 2 +- doc/manual/en/Coquelicot.raw.xml | 2 +- doc/manual/en/DateTime.raw.xml | 2 +- doc/manual/en/Deluge.raw.xml | 2 +- doc/manual/en/Diagnostics.raw.xml | 2 +- doc/manual/en/DynamicDNS.raw.xml | 2 +- doc/manual/en/Firewall.raw.xml | 2 +- doc/manual/en/GitWeb.raw.xml | 2 +- doc/manual/en/I2P.raw.xml | 2 +- doc/manual/en/Ikiwiki.raw.xml | 2 +- doc/manual/en/Infinoted.raw.xml | 2 +- doc/manual/en/LetsEncrypt.raw.xml | 2 +- doc/manual/en/MLDonkey.raw.xml | 2 +- doc/manual/en/MatrixSynapse.raw.xml | 5 +- doc/manual/en/MediaWiki.raw.xml | 2 +- doc/manual/en/Minetest.raw.xml | 2 +- doc/manual/en/MiniDLNA.raw.xml | 5 + doc/manual/en/Monkeysphere.raw.xml | 2 +- doc/manual/en/Mumble.raw.xml | 2 +- doc/manual/en/NameServices.raw.xml | 2 +- doc/manual/en/Networks.raw.xml | 2 +- doc/manual/en/OpenVPN.raw.xml | 2 +- doc/manual/en/PageKite.raw.xml | 2 +- doc/manual/en/Power.raw.xml | 2 +- doc/manual/en/Privoxy.raw.xml | 2 +- doc/manual/en/Quassel.raw.xml | 2 +- doc/manual/en/Radicale.raw.xml | 2 +- doc/manual/en/Repro.raw.xml | 2 +- doc/manual/en/Roundcube.raw.xml | 2 +- doc/manual/en/Searx.raw.xml | 2 +- doc/manual/en/SecureShell.raw.xml | 2 +- doc/manual/en/Security.raw.xml | 2 +- doc/manual/en/ServiceDiscovery.raw.xml | 2 +- doc/manual/en/Shadowsocks.raw.xml | 2 +- doc/manual/en/Snapshots.raw.xml | 2 +- doc/manual/en/Storage.raw.xml | 2 +- doc/manual/en/Syncthing.raw.xml | 2 +- doc/manual/en/TinyTinyRSS.raw.xml | 2 +- doc/manual/en/Tor.raw.xml | 2 +- doc/manual/en/Transmission.raw.xml | 2 +- doc/manual/en/Upgrades.raw.xml | 2 +- doc/manual/en/Users.raw.xml | 2 +- doc/manual/en/ejabberd.raw.xml | 2 +- doc/manual/en/freedombox-manual.raw.xml | 146 +++++++++++++++++++----- doc/manual/es/Apache_userdir.raw.xml | 2 +- doc/manual/es/Backups.raw.xml | 2 +- doc/manual/es/Cockpit.raw.xml | 2 +- doc/manual/es/Configure.raw.xml | 2 +- doc/manual/es/Coquelicot.raw.xml | 2 +- doc/manual/es/DateTime.raw.xml | 2 +- doc/manual/es/Deluge.raw.xml | 2 +- doc/manual/es/Diagnostics.raw.xml | 2 +- doc/manual/es/DynamicDNS.raw.xml | 2 +- doc/manual/es/Firewall.raw.xml | 2 +- doc/manual/es/GitWeb.raw.xml | 5 + doc/manual/es/I2P.raw.xml | 2 +- doc/manual/es/Ikiwiki.raw.xml | 2 +- doc/manual/es/Infinoted.raw.xml | 2 +- doc/manual/es/LetsEncrypt.raw.xml | 2 +- doc/manual/es/MLDonkey.raw.xml | 2 +- doc/manual/es/MatrixSynapse.raw.xml | 2 +- doc/manual/es/MediaWiki.raw.xml | 2 +- doc/manual/es/Minetest.raw.xml | 2 +- doc/manual/es/MiniDLNA.raw.xml | 5 + doc/manual/es/Monkeysphere.raw.xml | 2 +- doc/manual/es/Mumble.raw.xml | 2 +- doc/manual/es/NameServices.raw.xml | 2 +- doc/manual/es/Networks.raw.xml | 2 +- doc/manual/es/OpenVPN.raw.xml | 2 +- doc/manual/es/PageKite.raw.xml | 2 +- doc/manual/es/Power.raw.xml | 2 +- doc/manual/es/Privoxy.raw.xml | 2 +- doc/manual/es/Quassel.raw.xml | 2 +- doc/manual/es/Radicale.raw.xml | 2 +- doc/manual/es/Repro.raw.xml | 2 +- doc/manual/es/Roundcube.raw.xml | 2 +- doc/manual/es/Searx.raw.xml | 2 +- doc/manual/es/SecureShell.raw.xml | 2 +- doc/manual/es/Security.raw.xml | 2 +- doc/manual/es/ServiceDiscovery.raw.xml | 2 +- doc/manual/es/Shadowsocks.raw.xml | 2 +- doc/manual/es/Snapshots.raw.xml | 2 +- doc/manual/es/Storage.raw.xml | 2 +- doc/manual/es/Syncthing.raw.xml | 2 +- doc/manual/es/TinyTinyRSS.raw.xml | 2 +- doc/manual/es/Tor.raw.xml | 2 +- doc/manual/es/Transmission.raw.xml | 2 +- doc/manual/es/Upgrades.raw.xml | 2 +- doc/manual/es/Users.raw.xml | 2 +- doc/manual/es/ejabberd.raw.xml | 2 +- doc/manual/es/freedombox-manual.raw.xml | 140 +++++++++++++++++++++++ 94 files changed, 364 insertions(+), 118 deletions(-) create mode 100644 doc/manual/en/MiniDLNA.raw.xml create mode 100644 doc/manual/es/GitWeb.raw.xml create mode 100644 doc/manual/es/MiniDLNA.raw.xml diff --git a/doc/manual/en/Apache_userdir.raw.xml b/doc/manual/en/Apache_userdir.raw.xml index f0602f59c..bd393e8db 100644 --- a/doc/manual/en/Apache_userdir.raw.xml +++ b/doc/manual/en/Apache_userdir.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Apache_userdir32019-02-27 00:08:57JamesValleroyremove wiki links22019-02-17 21:44:22MikkelKirkgaardNielsenrefer to ourselves as User websites, add basics table from new template12019-02-13 23:15:52MikkelKirkgaardNielsenadd draft page
User websites (userdir)
What is User websites?User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup.
Application basicsCategory File sharing Available since version 0.9.4Upstream project website Upstream end user documentation
ScreenshotAdd when/if an interface is made for Plinth
Using User websitesThe module is always enabled and offers no configuration from the Plinth web interface. Currently its existence is not even visible in the Plinth web interface. Using the modules capability to serve documents requires just to place the documents in the designated directory in a Plinth user's home directory in the filesystem. This directory is: public_html Thus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html.
Using SFTP to create public_html and upload documentsTo be written Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Apache_userdir32019-02-27 00:08:57JamesValleroyremove wiki links22019-02-17 21:44:22MikkelKirkgaardNielsenrefer to ourselves as User websites, add basics table from new template12019-02-13 23:15:52MikkelKirkgaardNielsenadd draft page
User websites (userdir)
What is User websites?User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup.
Application basicsCategory File sharing Available since version 0.9.4Upstream project website Upstream end user documentation
ScreenshotAdd when/if an interface is made for Plinth
Using User websitesThe module is always enabled and offers no configuration from the Plinth web interface. Currently its existence is not even visible in the Plinth web interface. Using the modules capability to serve documents requires just to place the documents in the designated directory in a Plinth user's home directory in the filesystem. This directory is: public_html Thus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html.
Using SFTP to create public_html and upload documentsTo be written Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Backups.raw.xml b/doc/manual/en/Backups.raw.xml index b1663ff97..cc329cdc3 100644 --- a/doc/manual/en/Backups.raw.xml +++ b/doc/manual/en/Backups.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Backups312019-11-11 17:07:05JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service302019-02-26 23:33:42SunilMohanAdapaUpdate information about tt-rss292019-02-23 00:11:05JamesValleroyadd mldonkey282019-02-04 01:16:41SunilMohanAdapaAdd FreedomBox footer272019-01-31 01:30:48SunilMohanAdapaMinor formatting262019-01-31 01:29:18SunilMohanAdapaMake manual friendly, consolidate feature data, update description252019-01-30 17:45:57SunilMohanAdapaMinor release update242019-01-23 00:43:21SunilMohanAdapaUpdate information about syncthing232019-01-18 22:26:06SunilMohanAdapaUpdate OpenVPN information222018-10-30 05:04:32SunilMohanAdapaUpdate information about Tahoe-LAFS212018-10-29 23:50:51SunilMohanAdapaUpdate information about users and letsencrypt202018-10-26 05:36:32SunilMohanAdapaUpdate information about Monkeysphere192018-10-23 23:30:58SunilMohanAdapaUpdate information about upgrades182018-10-23 22:21:23SunilMohanAdapaAdd information about Tor172018-10-22 17:17:31SunilMohanAdapaUpdate information about newly merged changes162018-10-19 17:12:53SunilMohanAdapaAdd information about SSH152018-10-19 15:38:54SunilMohanAdapaUpdate information on recent progress142018-10-15 23:09:09SunilMohanAdapaUpdate status of datetime and deluge132018-10-09 03:22:17SunilMohanAdapaUpdate information about release of version 0.40122018-10-04 11:34:24JamesValleroyremove links to "FreedomBox" page112018-10-04 04:47:13SunilMohanAdapaMinor formatting102018-10-04 04:46:50SunilMohanAdapaUpdate list of supported applications92018-10-02 15:43:29DannyHaidar82018-10-02 15:41:49DannyHaidar72018-10-02 15:38:00DannyHaidar62018-10-01 17:38:55DannyHaidar52018-10-01 16:50:33DannyHaidar42018-10-01 16:49:00DannyHaidar32018-10-01 16:39:47DannyHaidar22018-10-01 16:37:48DannyHaidar12018-10-01 16:36:42DannyHaidar
BackupsFreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data.
Status of Backups Feature
App/Feature Support in Version Notes Avahi - no backup needed Backups - no backup needed Bind 0.41 Cockpit - no backup needed Coquelicot 0.40 includes uploaded files Datetime 0.41 Deluge 0.41 does not include downloaded/seeding files Diagnostics - no backup needed Dynamic DNS 0.39 ejabberd 0.39 includes all data and configuration Firewall - no backup needed ikiwiki 0.39 includes all wikis/blogs and their content infinoted 0.39 includes all data and keys JSXC - no backup needed Let's Encrypt 0.42 Matrix Synapse 0.39 includes media and uploads MediaWiki 0.39 includes wiki pages and uploaded files Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no backup needed Networks No No plans currently to implement backup OpenVPN 0.48 includes all user and server keys Pagekite 0.40 Power - no backup needed Privoxy - no backup needed Quassel 0.40 includes users and logs Radicale 0.39 includes calendar and cards data for all users repro 0.39 includes all users, data and keys Roundcube - no backup needed SearX - no backup needed Secure Shell (SSH) Server 0.41 includes host keys Security 0.41 Shadowsocks 0.40 only secrets Sharing 0.40 does not include the data in the shared folders Snapshot 0.41 only configuration, does not include snapshot data Storage - no backup needed Syncthing 0.48 does not include data in the shared folders Tahoe-LAFS 0.42 includes all data and configuration Tiny Tiny RSS 19.2 includes database containing feeds, stories, etc. Tor 0.42 includes configuration and secrets such as onion service keys Transmission 0.40 does not include downloaded/seeding files Upgrades 0.42 Users No No plans currently to implement backup
How to install and use BackupsStep 1 Backups: Step 1 Step 2 Backups: Step 2 Step 3 Backups: Step 3 Step 4 Backups: Step 4 Step 5 Backups: Step 5 Step 6 Backups: Step 6 Step 7 Backups: Step 7 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Backups312019-11-11 17:07:05JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service302019-02-26 23:33:42SunilMohanAdapaUpdate information about tt-rss292019-02-23 00:11:05JamesValleroyadd mldonkey282019-02-04 01:16:41SunilMohanAdapaAdd FreedomBox footer272019-01-31 01:30:48SunilMohanAdapaMinor formatting262019-01-31 01:29:18SunilMohanAdapaMake manual friendly, consolidate feature data, update description252019-01-30 17:45:57SunilMohanAdapaMinor release update242019-01-23 00:43:21SunilMohanAdapaUpdate information about syncthing232019-01-18 22:26:06SunilMohanAdapaUpdate OpenVPN information222018-10-30 05:04:32SunilMohanAdapaUpdate information about Tahoe-LAFS212018-10-29 23:50:51SunilMohanAdapaUpdate information about users and letsencrypt202018-10-26 05:36:32SunilMohanAdapaUpdate information about Monkeysphere192018-10-23 23:30:58SunilMohanAdapaUpdate information about upgrades182018-10-23 22:21:23SunilMohanAdapaAdd information about Tor172018-10-22 17:17:31SunilMohanAdapaUpdate information about newly merged changes162018-10-19 17:12:53SunilMohanAdapaAdd information about SSH152018-10-19 15:38:54SunilMohanAdapaUpdate information on recent progress142018-10-15 23:09:09SunilMohanAdapaUpdate status of datetime and deluge132018-10-09 03:22:17SunilMohanAdapaUpdate information about release of version 0.40122018-10-04 11:34:24JamesValleroyremove links to "FreedomBox" page112018-10-04 04:47:13SunilMohanAdapaMinor formatting102018-10-04 04:46:50SunilMohanAdapaUpdate list of supported applications92018-10-02 15:43:29DannyHaidar82018-10-02 15:41:49DannyHaidar72018-10-02 15:38:00DannyHaidar62018-10-01 17:38:55DannyHaidar52018-10-01 16:50:33DannyHaidar42018-10-01 16:49:00DannyHaidar32018-10-01 16:39:47DannyHaidar22018-10-01 16:37:48DannyHaidar12018-10-01 16:36:42DannyHaidar
BackupsFreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data.
Status of Backups Feature
App/Feature Support in Version Notes Avahi - no backup needed Backups - no backup needed Bind 0.41 Cockpit - no backup needed Coquelicot 0.40 includes uploaded files Datetime 0.41 Deluge 0.41 does not include downloaded/seeding files Diagnostics - no backup needed Dynamic DNS 0.39 ejabberd 0.39 includes all data and configuration Firewall - no backup needed ikiwiki 0.39 includes all wikis/blogs and their content infinoted 0.39 includes all data and keys JSXC - no backup needed Let's Encrypt 0.42 Matrix Synapse 0.39 includes media and uploads MediaWiki 0.39 includes wiki pages and uploaded files Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no backup needed Networks No No plans currently to implement backup OpenVPN 0.48 includes all user and server keys Pagekite 0.40 Power - no backup needed Privoxy - no backup needed Quassel 0.40 includes users and logs Radicale 0.39 includes calendar and cards data for all users repro 0.39 includes all users, data and keys Roundcube - no backup needed SearX - no backup needed Secure Shell (SSH) Server 0.41 includes host keys Security 0.41 Shadowsocks 0.40 only secrets Sharing 0.40 does not include the data in the shared folders Snapshot 0.41 only configuration, does not include snapshot data Storage - no backup needed Syncthing 0.48 does not include data in the shared folders Tahoe-LAFS 0.42 includes all data and configuration Tiny Tiny RSS 19.2 includes database containing feeds, stories, etc. Tor 0.42 includes configuration and secrets such as onion service keys Transmission 0.40 does not include downloaded/seeding files Upgrades 0.42 Users No No plans currently to implement backup
How to install and use BackupsStep 1 Backups: Step 1 Step 2 Backups: Step 2 Step 3 Backups: Step 3 Step 4 Backups: Step 4 Step 5 Backups: Step 5 Step 6 Backups: Step 6 Step 7 Backups: Step 7 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Cockpit.raw.xml b/doc/manual/en/Cockpit.raw.xml index 940cbcc10..835035e19 100644 --- a/doc/manual/en/Cockpit.raw.xml +++ b/doc/manual/en/Cockpit.raw.xml @@ -4,4 +4,4 @@ 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
FreedomBox/Manual/Cockpit62019-11-14 18:04:05fioddorwiki link to wiki page52019-11-11 16:57:11JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service42019-08-20 18:22:51SunilMohanAdapaUpdate information about .local domain and fix URLs32019-07-19 00:08:47SunilMohanAdapaAdd informatio about Cockpit needing a proper domain name22019-01-10 21:41:56SunilMohanAdapaWrite manual page for Cockpit12018-03-02 12:57:48JosephNuthalapatiCreate stub for Cockpit
Cockpit (Server Administration)Cockpit is a server manager that makes it easy to administer GNU/Linux servers via a web browser. On a FreedomBox, controls are available for many advanced functions that are not usually required. A web based terminal for console operations is also available. It can be accessed by any user on your FreedomBox belonging to the admin group. Cockpit is only usable when you have proper domain name setup for your FreedomBox and you use that domain name to access Cockpit. See the Troubleshooting section for more information. Use cockpit only if you are an administrator of GNU/Linux systems with advanced skills. FreedomBox tries to coexist with changes to system by system administrators and system administration tools like Cockpit. However, improper changes to the system might causes failures in FreedomBox functions.
Using CockpitInstall Cockpit like any other application on FreedomBox. Make sure that Cockpit is enabled after that. cockpit-enable.png Ensure that the user account on FreedomBox that will used for Cockpit is part of the administrators group. cockpit-admin-user.png Launch the Cockpit web interface. Login using the configured user account. cockpit-login.png Start using cockpit. cockpit-system.png Cockpit is usable on mobile interfaces too. cockpit-mobile.png
FeaturesThe following features of Cockpit may be useful for advanced FreedomBox users.
System DashboardCockpit has a system dashboard that Shows detailed hardware information Shows basic performance metrics of a system Allows changing system time and timezone Allows changing hostname. Please use FreedomBox UI to do this Shows SSH server fingerprints cockpit-system.png
Viewing System LogsCockpit allows querying system logs and examining them in full detail. cockpit-logs.png
Managing StorageCockpit allows following advanced storage functions: View full disk information Editing disk partitions RAID management cockpit-storage1.png cockpit-storage2.png
NetworkingCockpit and FreedomBox both rely on NetworkManager to configure the network. However, Cockpit offers some advanced configuration not available on FreedomBox: Route configuration Configure Bonds, Bridges, VLANs cockpit-network1.png cockpit-network2.png cockpit-network3.png
ServicesCockpit allows management of services and periodic jobs (similar to cron). cockpit-services1.png cockpit-services2.png
Web TerminalCockpit offers a web based terminal that can be used perform manual system administration tasks. cockpit-terminal.png
TroubleshootingCockpit requires a domain name to be properly setup on your FreedomBox and will only work when you access it using a URL with that domain name. Cockpit will not work when using IP address in the URL. Using freedombox.local as the domain name also does not work. For example, the following URLs will not work: Starting with FreedomBox version 19.15, using .local domain works. You can access Cockpit using the URL . The .local domain is based on your hostname. If your hostname is mybox, your .local domain name will be mybox.local and the Cockpit URL will be . To properly access Cockpit, use the domain name configured for your FreedomBox.Cockpit will also work well when using a Tor Onion Service. The following URLs will work: The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +https://exampletorhs.onion/_cockpit/]]>The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Configure.raw.xml b/doc/manual/en/Configure.raw.xml index 836388c54..59b2eecf3 100644 --- a/doc/manual/en/Configure.raw.xml +++ b/doc/manual/en/Configure.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Configure92019-02-28 10:25:01JosephNuthalapatiRename default app to webserver home page82018-10-09 09:54:01JosephNuthalapatiImprove formatting72018-07-25 08:38:53JosephNuthalapatiRemove /home as an alias to /freedombox62018-07-24 17:51:28SunilMohanAdapaRename FreedomBox Plinth to FreedomBox Service (Plinth)52018-07-24 16:12:49JosephNuthalapatiAdd tip about bookmarking FreedomBox Plinth42018-07-24 13:52:47JosephNuthalapatiAdd wiki entry about Default App32016-12-31 04:11:43JamesValleroymention how domain name is used22016-12-31 04:07:26JamesValleroyfix outline12016-08-21 16:35:55DrahtseilCreated Configure
ConfigureConfigure has some general configuration options:
HostnameHostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox.
Domain NameDomain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere.
Webserver Home PageThis is an advanced option that allows you to set something other than FreedomBox Service (Plinth) as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. Once some other app is set as the home page, you can only navigate to the FreedomBox Service (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinth Tip: Bookmark the URL of FreedomBox Service (Plinth) before setting the home page to some other app. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Configure92019-02-28 10:25:01JosephNuthalapatiRename default app to webserver home page82018-10-09 09:54:01JosephNuthalapatiImprove formatting72018-07-25 08:38:53JosephNuthalapatiRemove /home as an alias to /freedombox62018-07-24 17:51:28SunilMohanAdapaRename FreedomBox Plinth to FreedomBox Service (Plinth)52018-07-24 16:12:49JosephNuthalapatiAdd tip about bookmarking FreedomBox Plinth42018-07-24 13:52:47JosephNuthalapatiAdd wiki entry about Default App32016-12-31 04:11:43JamesValleroymention how domain name is used22016-12-31 04:07:26JamesValleroyfix outline12016-08-21 16:35:55DrahtseilCreated Configure
ConfigureConfigure has some general configuration options:
HostnameHostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox.
Domain NameDomain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere.
Webserver Home PageThis is an advanced option that allows you to set something other than FreedomBox Service (Plinth) as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. Once some other app is set as the home page, you can only navigate to the FreedomBox Service (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinth Tip: Bookmark the URL of FreedomBox Service (Plinth) before setting the home page to some other app. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Coquelicot.raw.xml b/doc/manual/en/Coquelicot.raw.xml index 29ca2d536..974918109 100644 --- a/doc/manual/en/Coquelicot.raw.xml +++ b/doc/manual/en/Coquelicot.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Coquelicot72019-09-11 09:45:09fioddorCategory Deduplicated62018-12-30 19:59:56DrahtseilBasic priniciple52018-03-05 09:15:01JosephNuthalapaticoquelicot: Fix broken links42018-02-26 17:14:51JamesValleroyincluded in 0.2432018-02-12 23:48:10JamesValleroybump version22018-02-12 23:47:14JamesValleroyreplace fancy quote characters with plain quote characters12018-02-10 03:14:55JosephNuthalapatiCreate new page for Coquelicot
File Sharing (Coquelicot)
About CoquelicotCoquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. After the upload you get a unique link that can be shared to your partners in order to Read more about Coquelicot at the Coquelicot README Available since: version 0.24.0
When to use CoquelicotCoquelicot is best used to quickly share a single file. If you want to share a folder, for a single use, compress the folder and share it over Coquelicot which must be kept synchronized between computers, use Syncthing instead Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server.
Coquelicot on FreedomBoxWith Coquelicot installed, you can upload files to your FreedomBox server and privately share them. Post installation, the Coquelicot page offers two settings. Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the Plinth interface anytime. Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox.
PrivacySomeone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient.
Sharing over instant messengersSome instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option.
Sharing download links privatelyIt is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Coquelicot72019-09-11 09:45:09fioddorCategory Deduplicated62018-12-30 19:59:56DrahtseilBasic priniciple52018-03-05 09:15:01JosephNuthalapaticoquelicot: Fix broken links42018-02-26 17:14:51JamesValleroyincluded in 0.2432018-02-12 23:48:10JamesValleroybump version22018-02-12 23:47:14JamesValleroyreplace fancy quote characters with plain quote characters12018-02-10 03:14:55JosephNuthalapatiCreate new page for Coquelicot
File Sharing (Coquelicot)
About CoquelicotCoquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. After the upload you get a unique link that can be shared to your partners in order to Read more about Coquelicot at the Coquelicot README Available since: version 0.24.0
When to use CoquelicotCoquelicot is best used to quickly share a single file. If you want to share a folder, for a single use, compress the folder and share it over Coquelicot which must be kept synchronized between computers, use Syncthing instead Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server.
Coquelicot on FreedomBoxWith Coquelicot installed, you can upload files to your FreedomBox server and privately share them. Post installation, the Coquelicot page offers two settings. Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the Plinth interface anytime. Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox.
PrivacySomeone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient.
Sharing over instant messengersSome instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option.
Sharing download links privatelyIt is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/DateTime.raw.xml b/doc/manual/en/DateTime.raw.xml index bc9c1fa78..709b643a5 100644 --- a/doc/manual/en/DateTime.raw.xml +++ b/doc/manual/en/DateTime.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/DateTime22017-03-31 20:20:57DrahtseilScreenshot DateTime12016-08-21 09:26:45DrahtseilCreated Date & Time
Date & TimeThis network time server is a program that maintains the system time in synchronization with servers on the Internet. You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). DateTime.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/DateTime22017-03-31 20:20:57DrahtseilScreenshot DateTime12016-08-21 09:26:45DrahtseilCreated Date & Time
Date & TimeThis network time server is a program that maintains the system time in synchronization with servers on the Internet. You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). DateTime.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Deluge.raw.xml b/doc/manual/en/Deluge.raw.xml index 7fecbc4d5..af472439d 100644 --- a/doc/manual/en/Deluge.raw.xml +++ b/doc/manual/en/Deluge.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Deluge112016-12-31 01:32:15JamesValleroyadd initial setup directions102016-12-30 19:20:00JamesValleroyreword92016-12-30 19:14:16JamesValleroyadd intro paragraph82016-12-30 19:00:50JamesValleroyno space in "BitTorrent"72016-12-26 18:07:46JamesValleroyadd screenshot62016-09-01 19:05:24Drahtseiladapted title to Plinth wording52016-04-10 07:26:48PhilippeBaretAdded bottom navigation link42015-12-15 20:41:02PhilippeBaretCorrection32015-12-15 20:40:16PhilippeBaretCorrection22015-12-15 18:16:28PhilippeBaretAdded Deluge definition12015-12-15 16:59:01PhilippeBaretCreated new Deluge page for manual
BitTorrent (Deluge)
What is Deluge?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins.
ScreenshotDeluge Web UI
Initial SetupAfter installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: Deluge Login The initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. Deluge Connection Manager (Offline) Now it should say "Online". Click "Connect" to complete the setup. Deluge Connection Manager (Online) At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Deluge112016-12-31 01:32:15JamesValleroyadd initial setup directions102016-12-30 19:20:00JamesValleroyreword92016-12-30 19:14:16JamesValleroyadd intro paragraph82016-12-30 19:00:50JamesValleroyno space in "BitTorrent"72016-12-26 18:07:46JamesValleroyadd screenshot62016-09-01 19:05:24Drahtseiladapted title to Plinth wording52016-04-10 07:26:48PhilippeBaretAdded bottom navigation link42015-12-15 20:41:02PhilippeBaretCorrection32015-12-15 20:40:16PhilippeBaretCorrection22015-12-15 18:16:28PhilippeBaretAdded Deluge definition12015-12-15 16:59:01PhilippeBaretCreated new Deluge page for manual
BitTorrent (Deluge)
What is Deluge?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins.
ScreenshotDeluge Web UI
Initial SetupAfter installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: Deluge Login The initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. Deluge Connection Manager (Offline) Now it should say "Online". Click "Connect" to complete the setup. Deluge Connection Manager (Online) At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Diagnostics.raw.xml b/doc/manual/en/Diagnostics.raw.xml index 91a91e6cf..ee76da0ee 100644 --- a/doc/manual/en/Diagnostics.raw.xml +++ b/doc/manual/en/Diagnostics.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Diagnostics12016-08-21 09:43:52DrahtseilCreated Diagnostics
DiagnosticsThe system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. Just click Run Diagnostics. This may take some minutes. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Diagnostics12016-08-21 09:43:52DrahtseilCreated Diagnostics
DiagnosticsThe system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. Just click Run Diagnostics. This may take some minutes. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/DynamicDNS.raw.xml b/doc/manual/en/DynamicDNS.raw.xml index bf435339e..3c16999f9 100644 --- a/doc/manual/en/DynamicDNS.raw.xml +++ b/doc/manual/en/DynamicDNS.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/DynamicDNS162019-07-31 13:18:03NikolasNybyfix typo152019-02-26 03:20:16JamesValleroyspelling142018-03-11 03:11:04JosephNuthalapatiFix oversized image132017-03-31 20:35:42Drahtseilupdated screenshot122016-09-09 15:40:08SunilMohanAdapaMinor indentation fix with screenshot112016-09-01 19:18:48Drahtseiladapted title to Plinth wording102016-08-15 18:46:51DrahtseilScreenshot GNU-DIP92016-04-14 14:22:41PhilippeBaretAdded accurate How to create a DNS name with GnuDIP82016-04-10 07:15:47PhilippeBaretAdded bottom navigation link72016-01-11 06:28:36PhilippeBaretCorrection62015-12-15 18:48:25PhilippeBaretAdded definition title to Dynamic DNS page52015-09-13 15:02:37SunilMohanAdapaDemote headings one level for inclusion into manual42015-09-13 13:14:41SunilMohanAdapaMove DynamicDNS page to manual32015-08-13 13:03:13SunilMohanAdapaAdd more introduction and re-organize.22015-08-09 21:38:52DanielSteglich12015-08-09 21:23:48DanielSteglich
Dynamic DNS Client
What is Dynamic DNS?In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet.
GnuDIP vs. Update URLThere are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks.
Using the GnuDIP protocolRegister an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . In FreedomBox UI, enable the Dynamic DNS Service. Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. Dynamic DNS Settings Fill Domain Name, Username, Password information given by your provider into the corresponding fields.
Using an Update URLThis feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. In FreedomBox UI, enable the Dynamic DNS service. Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. If the update URL contains your current IP address, replace the IP address with the string <Ip>.
Checking If It WorksMake sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". Check that the last update status is not failed.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/DynamicDNS162019-07-31 13:18:03NikolasNybyfix typo152019-02-26 03:20:16JamesValleroyspelling142018-03-11 03:11:04JosephNuthalapatiFix oversized image132017-03-31 20:35:42Drahtseilupdated screenshot122016-09-09 15:40:08SunilMohanAdapaMinor indentation fix with screenshot112016-09-01 19:18:48Drahtseiladapted title to Plinth wording102016-08-15 18:46:51DrahtseilScreenshot GNU-DIP92016-04-14 14:22:41PhilippeBaretAdded accurate How to create a DNS name with GnuDIP82016-04-10 07:15:47PhilippeBaretAdded bottom navigation link72016-01-11 06:28:36PhilippeBaretCorrection62015-12-15 18:48:25PhilippeBaretAdded definition title to Dynamic DNS page52015-09-13 15:02:37SunilMohanAdapaDemote headings one level for inclusion into manual42015-09-13 13:14:41SunilMohanAdapaMove DynamicDNS page to manual32015-08-13 13:03:13SunilMohanAdapaAdd more introduction and re-organize.22015-08-09 21:38:52DanielSteglich12015-08-09 21:23:48DanielSteglich
Dynamic DNS Client
What is Dynamic DNS?In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet.
GnuDIP vs. Update URLThere are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks.
Using the GnuDIP protocolRegister an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . In FreedomBox UI, enable the Dynamic DNS Service. Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. Dynamic DNS Settings Fill Domain Name, Username, Password information given by your provider into the corresponding fields.
Using an Update URLThis feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. In FreedomBox UI, enable the Dynamic DNS service. Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. If the update URL contains your current IP address, replace the IP address with the string <Ip>.
Checking If It WorksMake sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". Check that the last update status is not failed.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Firewall.raw.xml b/doc/manual/en/Firewall.raw.xml index 570b4756d..6119bd5bf 100644 --- a/doc/manual/en/Firewall.raw.xml +++ b/doc/manual/en/Firewall.raw.xml @@ -14,4 +14,4 @@ firewall-cmd --permanent --zone=internal --add-port=5353/udp]]> --remove-interface=]]>Example: To add an interface to a zone: --add-interface= firewall-cmd --permanent --zone= --add-interface=]]>Example: InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +firewall-cmd --permanent --zone=internal --add-interface=eth0]]>InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/GitWeb.raw.xml b/doc/manual/en/GitWeb.raw.xml index b489a528a..909ff2600 100644 --- a/doc/manual/en/GitWeb.raw.xml +++ b/doc/manual/en/GitWeb.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/GitWeb42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.
Simple Git Hosting (GitWeb)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19
Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access.
AccessGitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb
HTTP basic authGitWeb 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. Example: Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. Note: If using this method, your password will be stored in plain text in the local repository's .git/config file.
MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/GitWeb42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.
Simple Git Hosting (GitWeb)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19
Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access.
AccessGitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb
HTTP basic authGitWeb 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. Example: Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. Note: If using this method, your password will be stored in plain text in the local repository's .git/config file.
MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/I2P.raw.xml b/doc/manual/en/I2P.raw.xml index 56952afa1..13554831b 100644 --- a/doc/manual/en/I2P.raw.xml +++ b/doc/manual/en/I2P.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBox
Anonymity Network (I2P)
About I2PThe Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. Find more information about I2P on their project homepage.
Services OfferedThe following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. \ No newline at end of file +
FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBox
Anonymity Network (I2P)
About I2PThe Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. Find more information about I2P on their project homepage.
Services OfferedThe following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. \ No newline at end of file diff --git a/doc/manual/en/Ikiwiki.raw.xml b/doc/manual/en/Ikiwiki.raw.xml index 52a0fb80f..a91584e63 100644 --- a/doc/manual/en/Ikiwiki.raw.xml +++ b/doc/manual/en/Ikiwiki.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Ikiwiki92016-12-26 19:18:01JamesValleroyadd screenshots82016-09-01 19:15:54Drahtseiladapted title to Plinth wording72016-05-26 17:19:45JamesValleroynew section on adding users as wiki admins62016-04-13 01:10:28PhilippeBaretAdded blog to quick start entry in Ikiwiki Manual52016-04-13 01:00:22PhilippeBaretAdded a "Quick Start" entry in Ikiwiki manual42016-04-10 07:21:53PhilippeBaretAdded bottom navigation link32015-12-15 19:54:35PhilippeBaretAdded Ikiwiki definition22015-11-29 19:13:55PhilippeBaretadded ## BEGIN_INCLUDE12015-09-13 17:06:14JamesValleroyadd ikiwiki page for manual
Wiki and Blog (Ikiwiki)
What is Ikiwiki?Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins.
Quick StartAfter the app installation on your box administration interface: Go to "Create" section and create a wiki or a blog Go back to "Configure" section and click on /ikiwiki link Click on your new wiki or blog name under "Parent directory" Enjoy your new publication page.
Creating a wiki or blogYou can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in Plinth. The first time you visit this page, it will ask to install packages required by Ikiwiki. After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. ikiwiki: Create
Accessing your wiki or blogFrom the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. ikiwiki: Manage From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login.
User login through SSOBesides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. To add a wiki user, go to the Users and Groups page in Plinth (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user.
Adding FreedomBox users as wiki adminsLogin to the wiki, using the admin account that was specified when the wiki was created. Click "Preferences", then "Setup". Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) Click "Save Setup". Click "Preferences", then "Logout". Login as the new admin user using "Login with HTTP auth". Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Ikiwiki92016-12-26 19:18:01JamesValleroyadd screenshots82016-09-01 19:15:54Drahtseiladapted title to Plinth wording72016-05-26 17:19:45JamesValleroynew section on adding users as wiki admins62016-04-13 01:10:28PhilippeBaretAdded blog to quick start entry in Ikiwiki Manual52016-04-13 01:00:22PhilippeBaretAdded a "Quick Start" entry in Ikiwiki manual42016-04-10 07:21:53PhilippeBaretAdded bottom navigation link32015-12-15 19:54:35PhilippeBaretAdded Ikiwiki definition22015-11-29 19:13:55PhilippeBaretadded ## BEGIN_INCLUDE12015-09-13 17:06:14JamesValleroyadd ikiwiki page for manual
Wiki and Blog (Ikiwiki)
What is Ikiwiki?Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins.
Quick StartAfter the app installation on your box administration interface: Go to "Create" section and create a wiki or a blog Go back to "Configure" section and click on /ikiwiki link Click on your new wiki or blog name under "Parent directory" Enjoy your new publication page.
Creating a wiki or blogYou can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in Plinth. The first time you visit this page, it will ask to install packages required by Ikiwiki. After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. ikiwiki: Create
Accessing your wiki or blogFrom the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. ikiwiki: Manage From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login.
User login through SSOBesides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. To add a wiki user, go to the Users and Groups page in Plinth (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user.
Adding FreedomBox users as wiki adminsLogin to the wiki, using the admin account that was specified when the wiki was created. Click "Preferences", then "Setup". Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) Click "Save Setup". Click "Preferences", then "Logout". Login as the new admin user using "Login with HTTP auth". Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Infinoted.raw.xml b/doc/manual/en/Infinoted.raw.xml index 5c96efb47..7ab7bc7e8 100644 --- a/doc/manual/en/Infinoted.raw.xml +++ b/doc/manual/en/Infinoted.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinoted
Gobby Server (infinoted)infinoted is a server for Gobby, a collaborative text editor. To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for infinoted: TCP 6523 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinoted
Gobby Server (infinoted)infinoted is a server for Gobby, a collaborative text editor. To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for infinoted: TCP 6523 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/LetsEncrypt.raw.xml b/doc/manual/en/LetsEncrypt.raw.xml index 7233bb2d0..d8aa75a0e 100644 --- a/doc/manual/en/LetsEncrypt.raw.xml +++ b/doc/manual/en/LetsEncrypt.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/LetsEncrypt102019-11-01 00:51:44JosephNuthalapatiFix attachment inlining92019-02-26 03:21:08JamesValleroyspelling82018-03-11 03:16:47JosephNuthalapati72017-01-19 00:18:41JamesValleroyreplace quote character62017-01-07 19:48:45JamesValleroyadd port forwarding info52017-01-07 18:21:14JamesValleroyclarify step42016-08-21 19:00:07Drahtseil32016-08-21 18:59:20DrahtseilScreencast of the setting up22016-08-21 17:57:07Drahtseilscreenshots12016-08-21 17:43:20DrahtseilCreated Let's Encypt
Certificates (Let's Encrypt)A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service.
Why using CertificatesThe communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged.
How to setupIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: TCP 80 (http) TCP 443 (https) Make the domain name known: In Configure insert your domain name, e.g. MyWebName.com Let's Encrypt Verify the domain name was accepted Check that it is enabled in Name Services Let's Encrypt Name Services Go to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. After some minutes a valid certificate is available Let's Encrypt Verify in your browser by checking https://MyWebName.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsingThe certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. With running diagnostics the certificate can also be verified. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/LetsEncrypt102019-11-01 00:51:44JosephNuthalapatiFix attachment inlining92019-02-26 03:21:08JamesValleroyspelling82018-03-11 03:16:47JosephNuthalapati72017-01-19 00:18:41JamesValleroyreplace quote character62017-01-07 19:48:45JamesValleroyadd port forwarding info52017-01-07 18:21:14JamesValleroyclarify step42016-08-21 19:00:07Drahtseil32016-08-21 18:59:20DrahtseilScreencast of the setting up22016-08-21 17:57:07Drahtseilscreenshots12016-08-21 17:43:20DrahtseilCreated Let's Encypt
Certificates (Let's Encrypt)A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service.
Why using CertificatesThe communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged.
How to setupIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: TCP 80 (http) TCP 443 (https) Make the domain name known: In Configure insert your domain name, e.g. MyWebName.com Let's Encrypt Verify the domain name was accepted Check that it is enabled in Name Services Let's Encrypt Name Services Go to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. After some minutes a valid certificate is available Let's Encrypt Verify in your browser by checking https://MyWebName.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsingThe certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. With running diagnostics the certificate can also be verified. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/MLDonkey.raw.xml b/doc/manual/en/MLDonkey.raw.xml index 417ddf437..b1916f36d 100644 --- a/doc/manual/en/MLDonkey.raw.xml +++ b/doc/manual/en/MLDonkey.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/MLDonkey122019-02-08 06:29:35SunilMohanAdapaUpdate more information about clients112019-02-06 13:52:06jcromero102019-02-02 21:16:52jcromero92019-01-23 21:18:05jcromero82019-01-23 18:34:25jcromero72019-01-23 18:30:54jcromero62019-01-23 18:19:19SunilMohanAdapaEscape from linking52019-01-23 18:18:47SunilMohanAdapaWrite MLdonkey as MLDonkey42019-01-23 18:17:54SunilMohanAdapaWrite MLdonkey as MLDonkey and other minor fixes32019-01-23 17:37:32jcromero22019-01-23 13:37:48jcromero12019-01-23 13:31:23jcromero
File Sharing (MLDonkey)
What is MLDonkey?MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. Read more about MLDonkey at the MLDonkey Project Wiki Available since: version 0.48.0
ScreenshotMLDonkey Web Interface
Using MLDonkey Web InterfaceAfter installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface.
Using Desktop/Mobile InterfaceMany desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. Create an admin user or use an existing admin user. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. See MLDonkey documentation for SSH Tunnel for more information. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/MLDonkey122019-02-08 06:29:35SunilMohanAdapaUpdate more information about clients112019-02-06 13:52:06jcromero102019-02-02 21:16:52jcromero92019-01-23 21:18:05jcromero82019-01-23 18:34:25jcromero72019-01-23 18:30:54jcromero62019-01-23 18:19:19SunilMohanAdapaEscape from linking52019-01-23 18:18:47SunilMohanAdapaWrite MLdonkey as MLDonkey42019-01-23 18:17:54SunilMohanAdapaWrite MLdonkey as MLDonkey and other minor fixes32019-01-23 17:37:32jcromero22019-01-23 13:37:48jcromero12019-01-23 13:31:23jcromero
File Sharing (MLDonkey)
What is MLDonkey?MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. Read more about MLDonkey at the MLDonkey Project Wiki Available since: version 0.48.0
ScreenshotMLDonkey Web Interface
Using MLDonkey Web InterfaceAfter installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface.
Using Desktop/Mobile InterfaceMany desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. Create an admin user or use an existing admin user. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. See MLDonkey documentation for SSH Tunnel for more information. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/MatrixSynapse.raw.xml b/doc/manual/en/MatrixSynapse.raw.xml index ad9ead4f8..8a8611418 100644 --- a/doc/manual/en/MatrixSynapse.raw.xml +++ b/doc/manual/en/MatrixSynapse.raw.xml @@ -2,9 +2,10 @@ -
FreedomBox/Manual/MatrixSynapse122019-10-07 23:01:22JamesValleroyfix spelling112019-09-25 18:31:37SunilMohanAdapaAdd section for advanced administration commands102019-03-01 17:53:22JosephNuthalapatiEscape FreedomBox hyperlinks92019-02-27 21:16:58JosephNuthalapatiMention IRC as an alternative for large Matrix rooms82019-02-13 09:09:45JosephNuthalapatiRemove pop-culture references. Add notes about large rooms and memory usage.72019-01-14 20:16:04DrahtseilSystem requirements62018-03-02 12:06:08JosephNuthalapati52018-03-02 10:44:12JosephNuthalapatiNaming was inconsistent42017-06-27 05:13:41JosephNuthalapati32017-03-24 06:42:49SunilMohanAdapaUpdate for explaining more features etc.22017-03-23 06:36:05rahulde12017-03-23 06:33:43rahulde
Chat Server (Matrix Synapse)
What is Matrix?Matrix is an open standard for interoperable, decentralized, real-time communication over IP. Synapse is the reference implementation of a Matrix server. It can be used to setup instant messaging on FreedomBox to host large chat rooms, end-to-end encrypted communication and audio/video calls. Matrix Synapse is a federated application where chat rooms can exist on any server and users from any server in the federated network can join them. Learn more about Matrix. Available since: version 0.14.0
How to access your Matrix Synapse server?We recommend the Riot client to access the Matrix Synapse server. You can download Riot for desktops. Mobile applications for Android and iOS are available from their respective app stores.
Setting up Matrix Synapse on your FreedomBoxTo enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and install it. Matrix needs a valid domain name to be configured. After installation, you will be asked to configure it. You will be able to select a domain from a drop down menu of available domains. Domains are configured using System -> Configure page. After configuring a domain, you will see that the service is running. The service will be accessible on the configured FreedomBox domain. All the registered users will have their Matrix IDs as @username:domain. Currently, you will not be able to change the domain once is it configured.
Federating with other Matrix instancesYou will be able to interact with any other person running another Matrix instance. This is done by simply starting a conversation with them using their matrix ID which is of the format @their-username:their-domain. You can also join rooms which are in another server and have audio/video calls with contacts on other server.
Memory usageThe Synapse reference server implemented in Python is known to be quite RAM hungry, especially when loading large rooms with thousands of members like #matrix:matrix.org. It is recommended to avoid joining such rooms if your FreedomBox device only has 1 GiB RAM or less. Rooms with up to a hundred members should be safe to join. The Matrix team is working on a new implementation of the Matrix server written in Go called Dendrite which might perform better in low-memory environments. Some large public rooms in the Matrix network are also available as IRC channels (e.g. #freedombox:matrix.org is also available as #freedombox on irc.debian.org). It is better to use IRC instead of Matrix for such large rooms. You can join the IRC channels using Quassel.
Advanced usageIf you wish to create a large number of users on your Matrix Synapse server, use the following commands on a remote shell as root user: /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +
FreedomBox/Manual/MatrixSynapse132019-12-27 15:42:46chkmue122019-10-07 23:01:22JamesValleroyfix spelling112019-09-25 18:31:37SunilMohanAdapaAdd section for advanced administration commands102019-03-01 17:53:22JosephNuthalapatiEscape FreedomBox hyperlinks92019-02-27 21:16:58JosephNuthalapatiMention IRC as an alternative for large Matrix rooms82019-02-13 09:09:45JosephNuthalapatiRemove pop-culture references. Add notes about large rooms and memory usage.72019-01-14 20:16:04DrahtseilSystem requirements62018-03-02 12:06:08JosephNuthalapati52018-03-02 10:44:12JosephNuthalapatiNaming was inconsistent42017-06-27 05:13:41JosephNuthalapati32017-03-24 06:42:49SunilMohanAdapaUpdate for explaining more features etc.22017-03-23 06:36:05rahulde12017-03-23 06:33:43rahulde
Chat Server (Matrix Synapse)
What is Matrix?Matrix is an open standard for interoperable, decentralized, real-time communication over IP. Synapse is the reference implementation of a Matrix server. It can be used to setup instant messaging on FreedomBox to host large chat rooms, end-to-end encrypted communication and audio/video calls. Matrix Synapse is a federated application where chat rooms can exist on any server and users from any server in the federated network can join them. Learn more about Matrix. Available since: version 0.14.0
How to access your Matrix Synapse server?We recommend the Riot client to access the Matrix Synapse server. You can download Riot for desktops. Mobile applications for Android and iOS are available from their respective app stores.
Setting up Matrix Synapse on your FreedomBoxTo enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and install it. Matrix needs a valid domain name to be configured. After installation, you will be asked to configure it. You will be able to select a domain from a drop down menu of available domains. Domains are configured using System -> Configure page. After configuring a domain, you will see that the service is running. The service will be accessible on the configured FreedomBox domain. All the registered users will have their Matrix IDs as @username:domain. Currently, you will not be able to change the domain once is it configured.
Federating with other Matrix instancesYou will be able to interact with any other person running another Matrix instance. This is done by simply starting a conversation with them using their matrix ID which is of the format @their-username:their-domain. You can also join rooms which are in another server and have audio/video calls with contacts on other server.
Memory usageThe Synapse reference server implemented in Python is known to be quite RAM hungry, especially when loading large rooms with thousands of members like #matrix:matrix.org. It is recommended to avoid joining such rooms if your FreedomBox device only has 1 GiB RAM or less. Rooms with up to a hundred members should be safe to join. The Matrix team is working on a new implementation of the Matrix server written in Go called Dendrite which might perform better in low-memory environments. Some large public rooms in the Matrix network are also available as IRC channels (e.g. #freedombox:matrix.org is also available as #freedombox on irc.debian.org). It is better to use IRC instead of Matrix for such large rooms. You can join the IRC channels using Quassel.
Advanced usageIf you wish to create a large number of users on your Matrix Synapse server, use the following commands on a remote shell as root user: /etc/matrix-synapse/conf.d/registration_shared_secret.yaml chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml systemctl restart matrix-synapse register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]>If you wish to see the list of users registered in Matrix Synapse, the following as root user: Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]]>If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. Run the following commands: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/MediaWiki.raw.xml b/doc/manual/en/MediaWiki.raw.xml index 9a84ffe7c..7158da6f2 100644 --- a/doc/manual/en/MediaWiki.raw.xml +++ b/doc/manual/en/MediaWiki.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/MediaWiki92018-08-28 09:42:01JosephNuthalapatiRemove internal links to MediaWiki82018-08-27 23:58:16JamesValleroytry to close last section72018-08-27 23:43:48JamesValleroyadd consistent newlines after headings62018-08-27 23:41:37JamesValleroyspelling52018-08-21 07:33:32JosephNuthalapati42018-08-21 07:32:43JosephNuthalapatiUpdate wiki to include new features32018-01-31 06:02:30SunilMohanAdapaAdd footer and category22018-01-17 10:26:45JosephNuthalapatiFix headings12018-01-13 04:01:22JosephNuthalapatiNew wiki entry for MediaWiki on FreedomBox
Wiki (MediaWiki)
About MediaWikiMediaWiki is the software that powers the Wikimedia suite of wikis. Read more about MediaWiki on Wikipedia Available since: version 0.20.0
MediaWiki on FreedomBoxMediaWiki 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.
User managementUsers 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.
Use casesMediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable.
Personal Knowledge RepositoryMediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance.
Community WikiA community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia.
Personal Wiki-based WebsiteSeveral websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine.
Editing Wiki Content
Visual EditorMediaWiki'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 Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki.
Other FormatsYou don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc.
Image UploadsImage uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/MediaWiki92018-08-28 09:42:01JosephNuthalapatiRemove internal links to MediaWiki82018-08-27 23:58:16JamesValleroytry to close last section72018-08-27 23:43:48JamesValleroyadd consistent newlines after headings62018-08-27 23:41:37JamesValleroyspelling52018-08-21 07:33:32JosephNuthalapati42018-08-21 07:32:43JosephNuthalapatiUpdate wiki to include new features32018-01-31 06:02:30SunilMohanAdapaAdd footer and category22018-01-17 10:26:45JosephNuthalapatiFix headings12018-01-13 04:01:22JosephNuthalapatiNew wiki entry for MediaWiki on FreedomBox
Wiki (MediaWiki)
About MediaWikiMediaWiki is the software that powers the Wikimedia suite of wikis. Read more about MediaWiki on Wikipedia Available since: version 0.20.0
MediaWiki on FreedomBoxMediaWiki 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.
User managementUsers 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.
Use casesMediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable.
Personal Knowledge RepositoryMediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance.
Community WikiA community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia.
Personal Wiki-based WebsiteSeveral websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine.
Editing Wiki Content
Visual EditorMediaWiki'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 Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki.
Other FormatsYou don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc.
Image UploadsImage uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Minetest.raw.xml b/doc/manual/en/Minetest.raw.xml index 53aa27264..312e5b3d8 100644 --- a/doc/manual/en/Minetest.raw.xml +++ b/doc/manual/en/Minetest.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Minetest32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub created
Block Sandbox (Minetest)Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a Minetest client is needed.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Minetest: UDP 30000 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Minetest32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub created
Block Sandbox (Minetest)Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a Minetest client is needed.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Minetest: UDP 30000 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/MiniDLNA.raw.xml b/doc/manual/en/MiniDLNA.raw.xml new file mode 100644 index 000000000..1c17769c7 --- /dev/null +++ b/doc/manual/en/MiniDLNA.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/MiniDLNA22019-11-21 20:18:10NektariosKatakis12019-11-20 16:49:59NektariosKatakis
MiniDLNAMiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients.
What is UPnP/DLNA?Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to.
Setting up MiniDLNA on your FreedomBox.To install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it.
File systems for external drives.If using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language.
External links Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Monkeysphere.raw.xml b/doc/manual/en/Monkeysphere.raw.xml index 3604621b6..04fb3323a 100644 --- a/doc/manual/en/Monkeysphere.raw.xml +++ b/doc/manual/en/Monkeysphere.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Monkeysphere12016-09-04 10:12:10Drahtseilstub created
MonkeysphereWith Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Monkeysphere12016-09-04 10:12:10Drahtseilstub created
MonkeysphereWith Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Mumble.raw.xml b/doc/manual/en/Mumble.raw.xml index a124fdb57..ee4cef31b 100644 --- a/doc/manual/en/Mumble.raw.xml +++ b/doc/manual/en/Mumble.raw.xml @@ -3,4 +3,4 @@ PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN' 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
FreedomBox/Manual/Mumble92019-11-07 03:25:36SunilMohanAdapaUpdate super user section82019-11-07 02:51:23SunilMohanAdapaMinor formatting72019-11-07 02:50:58SunilMohanAdapaAdded section about SuperUser account62017-01-02 13:28:53JamesValleroyadd port forwarding info52016-12-31 04:04:56JamesValleroyadd basic usage info42016-09-01 19:14:55Drahtseiladapted title to Plinth wording32016-04-10 07:20:42PhilippeBaretAdded bottom navigation link22015-12-15 20:51:58PhilippeBaret12015-12-15 20:06:18PhilippeBaretAdded Mumble page and definition.
Voice Chat (Mumble)
What is Mumble?Mumble is a voice chat software. Primarily intended for use while gaming, it is suitable for simple talking with high audio quality, noise suppression, encrypted communication, public/private-key authentication by default, and "wizards" to configure your microphone for instance. A user can be marked as a "priority speaker" within a channel.
Using MumbleFreedomBox includes the Mumble server. Clients are available for desktop and mobile platforms. Users can download one of these clients and connect to the server.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Mumble: TCP 64738 UDP 64738
Managing PermissionsA super user in Mumble has the ability to create administrator accounts who can in turn manage groups and channel permissions. This can be done after logging in with the username "SuperUser" using the super user password. See Mumble Guide for information on how to do this.. FreedomBox currently does not offer a UI to get or set the super user password for Mumble. A super user password is automatically generated during Mumble setup. To get the password, login to the terminal as admin user using Cockpit , Secure Shell or the console. Then, to read the super user password that was automatically generated during Mumble installation run the following command: You should see output such as: 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]>Alternatively, you can set a new password as follows: Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc/mumble-server.ini --readsupw"]]>Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/NameServices.raw.xml b/doc/manual/en/NameServices.raw.xml index d6d7636b8..8396b152e 100644 --- a/doc/manual/en/NameServices.raw.xml +++ b/doc/manual/en/NameServices.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/NameServices42019-11-11 16:58:04JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service32016-12-31 04:18:51JamesValleroyreword22016-08-21 17:16:56Drahtseil12016-08-21 17:16:41DrahtseilCreated NameServices
Name ServicesName Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/NameServices42019-11-11 16:58:04JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service32016-12-31 04:18:51JamesValleroyreword22016-08-21 17:16:56Drahtseil12016-08-21 17:16:41DrahtseilCreated NameServices
Name ServicesName Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Networks.raw.xml b/doc/manual/en/Networks.raw.xml index 5b4232968..4d0f468ab 100644 --- a/doc/manual/en/Networks.raw.xml +++ b/doc/manual/en/Networks.raw.xml @@ -6,4 +6,4 @@ wifi.scan-rand-mac-address=no]]>Then reboot the machine.
Adding a new network deviceWhen a new network device is added, network manager will automatically configure it. In most cases this will not work to your liking. Delete the automatic configuration created on the interface and create a new network connection. Select your newly added network interface in the add connection page. Then set firewall zone to internal and external appropriately. You can configure the interface to connect to a network or provide network configuration to whatever machine connects to it. Similarly, if it is a Wi-Fi interface, you can configure it to become a Wi-FI access point or to connect to an existing access points in the network.
Configuring a mesh networkFreedomBox has rudimentary support for participating in BATMAN-Adv based mesh networks. It is possible to either join an existing network in your area or create a new mesh network and share your Internet connection with the rest of the nodes that join the network. Currently, two connections have to be created and activated manually to join or create a mesh network.
Joining a mesh networkTo join an existing mesh network in your area, first consult the organizers and get information about the mesh network. Create a new connection, then select the connection type as Wi-Fi. In the following dialog, provide the following values:
Field NameExample ValueExplanation Connection Name Mesh Join - BATMAN The name must end with 'BATMAN' (uppercase) Physical Interface wlan0 The Wi-Fi device you wish to use for joining the mesh network Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox SSID ch1.freifunk.net As provided to you by the operators of the mesh network. You should see this as a network in Nearby Wi-Fi Networks Mode Ad-hoc Because this is a peer-to-peer network Frequency Band 2.4Ghz As provided to you by the operators of the mesh network Channel 1 As provided to you by the operators of the mesh network BSSID 12:CA:FF:EE:BA:BE As provided to you by the operators of the mesh network Authentication Open Leave this as open, unless you know your mesh network needs it be otherwise Passphrase Leave empty unless you know your mesh network requires one IPv4 Addressing Method Disabled We don't want to request IP configuration information yet Save the connection. Join the mesh network by activating this newly created connection. Create a second new connection, then select the connection type as Generic. In the following dialog, provide this following values: Field NameExample ValueExplanation Connection Name Mesh Connect Any name to identify this connection Physical Interface bat0 This interface will only show up after you successfully activate the connection in first step Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox IPv4 Addressing Method Auto Mesh networks usually have a DHCP server somewhere that provide your machine with IP configuration. If not, consult the operator and configure IP address setting accordingly with Manual method Save the connection. Configure your machine for participation in the network by activating this connection. Currently, this connection has to be manually activated every time you need to join the network. In future, FreedomBox will do this automatically. You will now be able reach other nodes in the network. You will also be able to connect to the Internet via the mesh network if there is an Internet connection point somewhere in mesh as setup by the operators.
Creating a mesh networkTo create your own mesh network and share your Internet connection with the rest of the nodes in the network: Follow the instructions as provided above in step 1 of Joining a mesh network but choose and fix upon your own valid values for SSID (a name for you mesh network), Frequency Band (usually 2.4Ghz), Channel (1 to 11 in 2.4Ghz band) and BSSID (a hex value like 12:CA:DE:AD:BE:EF). Create this connection and activate it. Follow the instructions as provided above in step 2 of Joining a mesh network but select IPv4 Addressing Method as Shared. This will provide automatic IP configuration to other nodes in the network as well as share the Internet connection on your machine (achieved using a second Wi-Fi interface, using Ethernet, etc.) with other nodes in the mesh network. Spread the word about your mesh network to your neighbors and let them know the parameters you have provided when creating the network. When other nodes connect to this mesh network, they have to follow steps in Joining a mesh network but use the values for SSID, Frequency Band and Channel that you have chosen when you created the mesh network.
Manual Network OperationFreedomBox automatically configures networks by default and provides a simplified interface to customize the configuration to specific needs. In most cases, manual operation is not necessary. The following steps describe how to manually operate network configuration in the event that a user finds FreedomBox interface to insufficient for task at hand or to diagnose a problem that FreedomBox does not identify. On the command line interface: For text based user interface for configuring network connections: To see the list of available network devices: To see the list of configured connections: To see the current status of a connection: ']]>To see the current firewall zone assigned to a network interface: ' | grep zone]]>or To create a new network connection: " ifname "" type ethernet nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]>To change the firewall zone for a connection: " connection.zone ""]]>For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: To see the current status of the firewall and manually operate it, see the Firewall section.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +nmcli con modify "" connection.zone internal]]>To change the firewall zone for a connection: " connection.zone ""]]>For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: To see the current status of the firewall and manually operate it, see the Firewall section. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/OpenVPN.raw.xml b/doc/manual/en/OpenVPN.raw.xml index f6c78d2a2..65ff1ea94 100644 --- a/doc/manual/en/OpenVPN.raw.xml +++ b/doc/manual/en/OpenVPN.raw.xml @@ -5,4 +5,4 @@
FreedomBox/Manual/OpenVPN162019-11-18 22:55:39JamesValleroyadd instructions for Network Manager152019-09-16 09:38:50fioddorMinor layout correction142019-05-10 23:08:07JamesValleroyuse standard text for port forwarding132019-03-01 01:28:15SunilMohanAdapaAdd instructions for connecting using mobile client122019-03-01 00:48:12SunilMohanAdapaAdd information about browsing Internet112019-03-01 00:37:30SunilMohanAdapaUpdate information about dealing with profile files102019-02-28 09:38:45JosephNuthalapatiUpdate image and set width92018-11-15 11:47:34JosephNuthalapatiAdd documentation on how to connect to VPN from Debian and check the connection. Update external link82016-12-31 04:01:13JamesValleroyclarify install vs setup72016-09-09 15:37:55SunilMohanAdapaMinor indentation fix with screenshot62016-09-01 19:14:03Drahtseiladapted title to Plinth wording52016-08-14 19:39:09JanCostermansadded screenshot and setting up sections42016-04-10 07:16:50PhilippeBaretAdded bottom navigation link32015-12-16 00:32:58PhilippeBaretText finishing22015-12-16 00:28:34PhilippeBaretAdded definition for OpenVPN12015-12-15 23:58:42PhilippeBaretAdded first content [OpenVPN page to Apps manual]
Virtual Private Network (OpenVPN)
What is OpenVPN?OpenVPN provides to your FreedomBox a virtual private network service. You can use this software for remote access, site-to-site VPNs and Wi-Fi security. OpenVPN includes support for dynamic IP addresses and NAT.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for OpenVPN: UDP 1194
Setting upIn Plinth apps menu, select Virtual Private Network (OpenVPN) and click Install. After the module is installed, there is an additional setup step that may take a long time to complete. Click "Start setup" to begin. OpenVPN service page Wait for the setup to finish. This could take a while. Once the setup of the OpenVPN server is complete, you can download your profile. This will download a file called <USER>.ovpn, where <USER> is the name of a FreedomBox user. Each FreedomBox user will be able to download a different profile. Users who are not administrators can download the profile from home page after login. The ovpn file contains all the information a vpn client needs to connect to the server. The downloaded profile contains the domain name of the FreedomBox that the client should connect to. This is picked up from the domain configured in 'Config' section of 'System' page. In case your domain is not configured properly, you may need to change this value after downloading the profile. If your OpenVPN client allows it, you can do this after importing the OpenVPN profile. Otherwise, you can edit the .ovpn profile file in a text editor and change the 'remote' line to contain the WAN IP address or hostname of your FreedomBox as follows.
Browsing Internet after connecting to VPNAfter connecting to the VPN, the client device will be able to browse the Internet without any further configuration. However, a pre-condition for this to work is that you need to have at least one Internet connected network interface which is part of the 'External' firewall zone. Use the networks configuration page to edit the firewall zone for the device's network interfaces.
Usage
On Android/LineageOSVisit FreedomBox home page. Login with your user account. From home page, download the OpenVPN profile. The file will be named username.ovpn. OpenVPN Download Profile Download an OpenVPN client such as OpenVPN for Android. F-Droid repository is recommended. In the app, select import profile. OpenVPN App In the select profile dialog, choose the username.opvn file you have just downloaded. Provide a name for the connection and save the profile. OpenVPN import profile Newly created profile will show up. If necessary, edit the profile and set the domain name of your FreedomBox as the server address. OpenVPN profile created OpenVPN edit domain name Connect by tapping on the profile. OpenVPN connect OpenVPN connected When done, disconnect by tapping on the profile. OpenVPN disconnect
On DebianInstall an OpenVPN client for your system Open the ovpn file with the OpenVPN client. .ovpn]]>If you use Network Manager, you can create a new connection by importing the file: .ovpn]]>
Checking if you are connected
On DebianTry to ping the FreedomBox or other devices on the local network. Running the command ip addr should show a tun0 connection. The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop.
External Links Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +$ sudo nmcli connection import type openvpn file /path/to/.ovpn]]>
Checking if you are connected
On DebianTry to ping the FreedomBox or other devices on the local network. Running the command ip addr should show a tun0 connection. The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop.
External Links Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/PageKite.raw.xml b/doc/manual/en/PageKite.raw.xml index e8ce14239..c10ca99ac 100644 --- a/doc/manual/en/PageKite.raw.xml +++ b/doc/manual/en/PageKite.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/PageKite122017-01-07 20:37:22JamesValleroyadd info on getting certificate112017-01-07 20:21:47JamesValleroyadd instructions102017-01-07 20:14:44JamesValleroyclarify how pagekite works92016-09-01 19:19:45Drahtseiladapted title to Plinth wording82016-04-10 07:13:20PhilippeBaretAdded navigation link72015-12-15 20:50:09PhilippeBaretCorrection62015-12-15 19:28:57PhilippeBaretAdded more definition52015-12-15 19:19:27PhilippeBaretAdded pagekite extended definition42015-09-13 14:58:24SunilMohanAdapaAdd headings for inclusion into manual32015-09-13 13:18:15SunilMohanAdapaMove PageKite page to manual22015-02-13 05:01:10SunilMohanAdapaInclude FreedomBox portal in footer12012-09-14 07:37:02planetlarg
Public Visibility (PageKite)
What is PageKite?PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all.
Using PageKiteCreate an account on a PageKite relay service. Add a kite to your account. Note your kite name and kite secret. In Plinth, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/PageKite122017-01-07 20:37:22JamesValleroyadd info on getting certificate112017-01-07 20:21:47JamesValleroyadd instructions102017-01-07 20:14:44JamesValleroyclarify how pagekite works92016-09-01 19:19:45Drahtseiladapted title to Plinth wording82016-04-10 07:13:20PhilippeBaretAdded navigation link72015-12-15 20:50:09PhilippeBaretCorrection62015-12-15 19:28:57PhilippeBaretAdded more definition52015-12-15 19:19:27PhilippeBaretAdded pagekite extended definition42015-09-13 14:58:24SunilMohanAdapaAdd headings for inclusion into manual32015-09-13 13:18:15SunilMohanAdapaMove PageKite page to manual22015-02-13 05:01:10SunilMohanAdapaInclude FreedomBox portal in footer12012-09-14 07:37:02planetlarg
Public Visibility (PageKite)
What is PageKite?PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all.
Using PageKiteCreate an account on a PageKite relay service. Add a kite to your account. Note your kite name and kite secret. In Plinth, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Power.raw.xml b/doc/manual/en/Power.raw.xml index 183de6ebf..a1c798098 100644 --- a/doc/manual/en/Power.raw.xml +++ b/doc/manual/en/Power.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Power32019-02-28 16:33:32JosephNuthalapatiRestart and shut down options in user menu22017-01-07 20:38:36JamesValleroynote confirmation12016-08-21 09:29:59DrahtseilCreated Power
PowerPower provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Power32019-02-28 16:33:32JosephNuthalapatiRestart and shut down options in user menu22017-01-07 20:38:36JamesValleroynote confirmation12016-08-21 09:29:59DrahtseilCreated Power
PowerPower provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Privoxy.raw.xml b/doc/manual/en/Privoxy.raw.xml index 591b1685d..886bd7051 100644 --- a/doc/manual/en/Privoxy.raw.xml +++ b/doc/manual/en/Privoxy.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Privoxy112019-09-16 12:07:52fioddorMinor correction102018-03-11 03:09:16JosephNuthalapatiFix oversized images92016-09-09 15:39:20SunilMohanAdapaMinor indentation fix with screenshots82016-09-09 15:31:16SunilMohanAdapaPromote the visibility of the screencast72016-08-09 19:09:55Drahtseilconfiguration for advanced users62016-08-06 20:02:42DrahtseilScreencast of the setting up52016-08-06 17:57:33Drahtseilscreenshots42016-08-01 19:38:35DrahtseilVery basic restructuring as preparation for more work to be done.32016-04-10 07:24:20PhilippeBaretAdded bottom navigation link22015-12-15 20:54:14PhilippeBaretAdded link to Privoxy FAQ12015-12-15 20:22:00PhilippeBaretAdded Privoxy page and definition
Web Proxy (Privoxy)A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms. Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: Privoxy FAQ).
ScreencastWatch the screencast on how to setup and use Privoxy in FreedomBox.
Setting upIn Plinth install Web Proxy (Privoxy) Privoxy Installation Adapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. Privoxy Browser Settings Go to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off.
Advanced UsersThe default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. While using Privoxy, you can see its configuration details and documentation at or . To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly. Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. The Quickstart is a good starting point to read on how to define own blocking and filtering rules. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Privoxy112019-09-16 12:07:52fioddorMinor correction102018-03-11 03:09:16JosephNuthalapatiFix oversized images92016-09-09 15:39:20SunilMohanAdapaMinor indentation fix with screenshots82016-09-09 15:31:16SunilMohanAdapaPromote the visibility of the screencast72016-08-09 19:09:55Drahtseilconfiguration for advanced users62016-08-06 20:02:42DrahtseilScreencast of the setting up52016-08-06 17:57:33Drahtseilscreenshots42016-08-01 19:38:35DrahtseilVery basic restructuring as preparation for more work to be done.32016-04-10 07:24:20PhilippeBaretAdded bottom navigation link22015-12-15 20:54:14PhilippeBaretAdded link to Privoxy FAQ12015-12-15 20:22:00PhilippeBaretAdded Privoxy page and definition
Web Proxy (Privoxy)A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms. Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: Privoxy FAQ).
ScreencastWatch the screencast on how to setup and use Privoxy in FreedomBox.
Setting upIn Plinth install Web Proxy (Privoxy) Privoxy Installation Adapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. Privoxy Browser Settings Go to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off.
Advanced UsersThe default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. While using Privoxy, you can see its configuration details and documentation at or . To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly. Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. The Quickstart is a good starting point to read on how to define own blocking and filtering rules. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Quassel.raw.xml b/doc/manual/en/Quassel.raw.xml index bee811e4d..89f8acda4 100644 --- a/doc/manual/en/Quassel.raw.xml +++ b/doc/manual/en/Quassel.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Quassel72019-05-10 23:05:32JamesValleroyuse standard text for port forwarding62019-02-27 21:34:38JosephNuthalapatiGrammar corrections and clarification about port forwarding52018-10-04 02:01:15SunilMohanAdapaAdd screenshots to the Quassel Client section42018-10-04 01:26:35SunilMohanAdapaRefactor information on how to connect to core using desktop client32018-03-11 03:00:04JosephNuthalapatiFix oversized image22016-08-18 17:30:28Drahtseilwording, screen-shots12016-08-17 20:09:38Drahtseilpage creation; not sure about the configuration of quassel-client (too long ago); screenshots to follow
IRC Client (Quassel)Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it.
Why run Quassel?Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available.
How to setup Quassel?Within Plinth select Applications go to IRC Client (Quassel) and install the application and make sure it is enabled Quassel Installation now your Quassel core is running
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Quassel: TCP 4242 Example configuration in router: Quassel_PortForwarding.png
ClientsClients to connect to Quassel from your desktop and mobile devices are available.
DesktopIn a Debian system, you can e.g. use quassel-client. The following steps describe how to connect Quassel Client with Quassel Core running on a FreedomBox. The first time you do this connection, Quassel Core will be initialized too. Launch Quassel Client. You will be greeted with a wizard to Connect to Core. Connect to Core Click the Add button to launch Add Core Account dialog. Add Core Account Fill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. Connect to Core Select the newly created core account and select OK to connect to it. If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. Untrusted Security Certificate Select Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Untrusted Security Certificate If this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. Core Configuration Wizard In the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Create Admin User Page In the Select Storage Backend page, select SQLite and click Commit. Select Storage Backend The core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. Welcome Wizard In Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup Identity In Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Setup Network Connection Select the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Server Info Server Info SSL Back in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. Setup Network Connection You should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. Quassel Main Window Select a channel and start seeing messages from others in the channel and send your own messages.
AndroidFor Android devices you may use e.g. Quasseldroid from F-Droid enter core, username etc. as above Quasseldroid.png By the way, the German verb quasseln means talking a lot, to jabber. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Quassel72019-05-10 23:05:32JamesValleroyuse standard text for port forwarding62019-02-27 21:34:38JosephNuthalapatiGrammar corrections and clarification about port forwarding52018-10-04 02:01:15SunilMohanAdapaAdd screenshots to the Quassel Client section42018-10-04 01:26:35SunilMohanAdapaRefactor information on how to connect to core using desktop client32018-03-11 03:00:04JosephNuthalapatiFix oversized image22016-08-18 17:30:28Drahtseilwording, screen-shots12016-08-17 20:09:38Drahtseilpage creation; not sure about the configuration of quassel-client (too long ago); screenshots to follow
IRC Client (Quassel)Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it.
Why run Quassel?Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available.
How to setup Quassel?Within Plinth select Applications go to IRC Client (Quassel) and install the application and make sure it is enabled Quassel Installation now your Quassel core is running
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Quassel: TCP 4242 Example configuration in router: Quassel_PortForwarding.png
ClientsClients to connect to Quassel from your desktop and mobile devices are available.
DesktopIn a Debian system, you can e.g. use quassel-client. The following steps describe how to connect Quassel Client with Quassel Core running on a FreedomBox. The first time you do this connection, Quassel Core will be initialized too. Launch Quassel Client. You will be greeted with a wizard to Connect to Core. Connect to Core Click the Add button to launch Add Core Account dialog. Add Core Account Fill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. Connect to Core Select the newly created core account and select OK to connect to it. If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. Untrusted Security Certificate Select Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Untrusted Security Certificate If this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. Core Configuration Wizard In the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Create Admin User Page In the Select Storage Backend page, select SQLite and click Commit. Select Storage Backend The core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. Welcome Wizard In Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup Identity In Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Setup Network Connection Select the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Server Info Server Info SSL Back in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. Setup Network Connection You should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. Quassel Main Window Select a channel and start seeing messages from others in the channel and send your own messages.
AndroidFor Android devices you may use e.g. Quasseldroid from F-Droid enter core, username etc. as above Quasseldroid.png By the way, the German verb quasseln means talking a lot, to jabber. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Radicale.raw.xml b/doc/manual/en/Radicale.raw.xml index 3298f64a9..2cbfada8f 100644 --- a/doc/manual/en/Radicale.raw.xml +++ b/doc/manual/en/Radicale.raw.xml @@ -26,4 +26,4 @@ chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ apt remove -y python-radicale if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi -(After FreedomBox 19.1 is available, goto FreedomBox web interface and set your preference for calendar sharing again, if it is not the default option, as it will have been lost.)]]>Notes: python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes.
Troubleshooting1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +(After FreedomBox 19.1 is available, goto FreedomBox web interface and set your preference for calendar sharing again, if it is not the default option, as it will have been lost.)]]>Notes: python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes.
Troubleshooting1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Repro.raw.xml b/doc/manual/en/Repro.raw.xml index bded40176..7ac82b7fc 100644 --- a/doc/manual/en/Repro.raw.xml +++ b/doc/manual/en/Repro.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Repro82019-02-26 23:26:49JamesValleroyremove content from manual72019-02-26 23:25:03JamesValleroyadd note about removal62017-01-02 13:43:51JamesValleroyadd port forwarding info52016-12-31 03:57:09JamesValleroyadd basic info42016-12-26 18:56:31JamesValleroyadd screenshots32016-05-27 17:24:23JamesValleroyadd footer22016-05-27 17:21:48JamesValleroyRenamed from 'FreedomBox/Manual/repro'.12016-05-15 19:03:02JamesValleroystart page
SIP Server (repro)App removed repro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. repro is a server for SIP, a standard that enables Voice-over-IP calls. A desktop or mobile SIP client is required to use repro.
How to set up the SIP serverConfigure the domain at /repro/domains.html on the FreedomBox. Repro Domains Add users at /repro/addUser.html. Repro Users Disable and re-enable the repro application in Plinth.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Repro82019-02-26 23:26:49JamesValleroyremove content from manual72019-02-26 23:25:03JamesValleroyadd note about removal62017-01-02 13:43:51JamesValleroyadd port forwarding info52016-12-31 03:57:09JamesValleroyadd basic info42016-12-26 18:56:31JamesValleroyadd screenshots32016-05-27 17:24:23JamesValleroyadd footer22016-05-27 17:21:48JamesValleroyRenamed from 'FreedomBox/Manual/repro'.12016-05-15 19:03:02JamesValleroystart page
SIP Server (repro)App removed repro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. repro is a server for SIP, a standard that enables Voice-over-IP calls. A desktop or mobile SIP client is required to use repro.
How to set up the SIP serverConfigure the domain at /repro/domains.html on the FreedomBox. Repro Domains Add users at /repro/addUser.html. Repro Users Disable and re-enable the repro application in Plinth.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Roundcube.raw.xml b/doc/manual/en/Roundcube.raw.xml index d12263225..0b3e4afb2 100644 --- a/doc/manual/en/Roundcube.raw.xml +++ b/doc/manual/en/Roundcube.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Roundcube82019-03-13 21:13:00SunilMohanAdapaMinor formatting.72019-03-13 21:11:10SunilMohanAdapaAdd information about how to login to Roundcube62016-12-31 03:41:20JamesValleroyadd link52016-09-01 19:12:35Drahtseiladapted title to Plinth wording42016-04-10 07:25:23PhilippeBaretAdded bottom navigation link32015-12-15 19:04:22PhilippeBaretText finishing22015-12-15 19:03:29PhilippeBaretAdded ## END_INCLUDE12015-12-15 19:02:17PhilippeBaretAdded Rouncube page with definition
Email Client (Roundcube)
What is Roundcube?Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking.
Using RoundcubeAfter Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. Logging into your IMAP server
Using Gmail with RoundcubeIf you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. Logging into Gmail Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Roundcube82019-03-13 21:13:00SunilMohanAdapaMinor formatting.72019-03-13 21:11:10SunilMohanAdapaAdd information about how to login to Roundcube62016-12-31 03:41:20JamesValleroyadd link52016-09-01 19:12:35Drahtseiladapted title to Plinth wording42016-04-10 07:25:23PhilippeBaretAdded bottom navigation link32015-12-15 19:04:22PhilippeBaretText finishing22015-12-15 19:03:29PhilippeBaretAdded ## END_INCLUDE12015-12-15 19:02:17PhilippeBaretAdded Rouncube page with definition
Email Client (Roundcube)
What is Roundcube?Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking.
Using RoundcubeAfter Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. Logging into your IMAP server
Using Gmail with RoundcubeIf you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. Logging into Gmail Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Searx.raw.xml b/doc/manual/en/Searx.raw.xml index 407714715..085b82079 100644 --- a/doc/manual/en/Searx.raw.xml +++ b/doc/manual/en/Searx.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Searx82019-05-22 17:08:56David JonesAdded information that SearX is accessible via Tor.72018-11-01 09:17:25JosephNuthalapatiAdd ToC62018-03-08 15:08:44JosephNuthalapatiAdd screenshot. Remove last 20 seconds from screencast to reduce size.52018-03-08 14:23:24JosephNuthalapatiAdd query param to make the video play within the browser42018-03-07 20:43:27Drahtseil32018-03-07 20:37:05DrahtseilScreencast of the installation and first steps22018-02-26 17:15:26JamesValleroyincluded in 0.2412018-02-22 12:12:50JosephNuthalapatisearx: Initial draft
Web Search (Searx)
About SearxSearx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. Read more about Searx on their official website. Available since: version 0.24.0
ScreenshotSearx Screenshot
ScreencastSearx installation and first steps (14 MB)
Why use Searx?
Personalization and Filter BubblesSearch engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines.
Advertisement filteringSearx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions.
PrivacySearx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST.
Searx on FreedomBoxSearx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. SearX is easily accessible via Tor. Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Searx82019-05-22 17:08:56David JonesAdded information that SearX is accessible via Tor.72018-11-01 09:17:25JosephNuthalapatiAdd ToC62018-03-08 15:08:44JosephNuthalapatiAdd screenshot. Remove last 20 seconds from screencast to reduce size.52018-03-08 14:23:24JosephNuthalapatiAdd query param to make the video play within the browser42018-03-07 20:43:27Drahtseil32018-03-07 20:37:05DrahtseilScreencast of the installation and first steps22018-02-26 17:15:26JamesValleroyincluded in 0.2412018-02-22 12:12:50JosephNuthalapatisearx: Initial draft
Web Search (Searx)
About SearxSearx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. Read more about Searx on their official website. Available since: version 0.24.0
ScreenshotSearx Screenshot
ScreencastSearx installation and first steps (14 MB)
Why use Searx?
Personalization and Filter BubblesSearch engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines.
Advertisement filteringSearx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions.
PrivacySearx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST.
Searx on FreedomBoxSearx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. SearX is easily accessible via Tor. Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/SecureShell.raw.xml b/doc/manual/en/SecureShell.raw.xml index 7b6d48075..12ff8b812 100644 --- a/doc/manual/en/SecureShell.raw.xml +++ b/doc/manual/en/SecureShell.raw.xml @@ -5,4 +5,4 @@
FreedomBox/Manual/SecureShell132019-11-11 17:01:45JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service122019-02-26 03:46:55JamesValleroyremove wiki links112018-01-30 07:55:33SunilMohanAdapaUpdate GitHub links with Salsa102017-03-06 23:17:08JamesValleroyadd note92016-10-13 21:49:06David JonesAdded infromation about connecting to the FBX using ssh over Tor82016-10-13 21:09:31David JonesAdded information about admin account for first log in to Plinth72016-09-05 09:42:36ElViroloRemoving my previous contribution, as info already present in original version.62016-09-05 09:39:05ElVirolo52016-09-05 09:26:15ElViroloAdded "Users created via Plinth" paragraph42015-12-21 19:42:10JamesValleroyupdate default account32015-12-21 19:33:56JamesValleroyfix outline level22015-12-15 19:31:18PhilippeBaretAdded definition title12015-09-16 16:22:37SunilMohanAdapaNew manual page for secure shell access
Secure Shell
What is Secure Shell?FreedomBox runs openssh-server server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell.
Setting Up A User Account
Plinth First Log In: Admin AccountWhen creating an account in Plinth for the first time, this user will automatically have administrator capabilities. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo.
Default User AccountNote: If you can access Plinth, then you don't need to do this. You can use the user account created in Plinth to connect to SSH. The pre-built FreedomBox images have a default user account called "fbx". However the password is not set for this account, so it will not be possible to log in with this account by default. There is a script included in the freedom-maker program, that will allow you to set the password for this account, if it is needed. To set a password for the "fbx" user: 1. Decompress the image file. 2. Get a copy of freedom-maker from . 3. Run sudo ./bin/passwd-in-image <image-file> fbx. 4. Copy the image file to SD card and boot device as normal. The "fbx" user also has superuser privileges via sudo.
Logging In
LocalTo login via SSH, to your FreedomBox: Replace fbx with the name of the user you wish to login as. freedombox should be replaced with the hostname or IP address of you FreedomBox device as found in the Quick Start process. fbx is the default user present on FreedomBox with superuser privileges. Any other user created using Plinth and belonging to the group admin will be able to login. The root account has no password set and will not be able to login. Access will be denied to all other users. fbx and users in admin group will also be able to login on the terminal directly. Other users will be denied access. If you repeatedly try to login as a user and fail, you will be blocked from logging in for some time. This is due to libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation.
SSH over TorIf in Plinth you have enabled onion services via Tor, you can access your FreedomBox using ssh over Tor. On a GNU/Linux computer, install netcat-openbsd. Edit ~/.ssh/config to enable connections over Tor. Add the following: Replace USERNAME with, e.g., an admin username (see above). Note that in some cases you may need to replace 9050 with 9150. Now to connect to the FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox.
Becoming SuperuserAfter logging in, if you want to become the superuser for performing administrative activities: Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything.
Changing PasswordTo change the password of a user managed by Plinth, use the change password page. However, the fbx default user is not managed by Plinth and its password cannot be changed in the web interface. To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: This will ask you for your current password before giving you the opportunity to set a new one.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file + ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p]]>Replace USERNAME with, e.g., an admin username (see above). Note that in some cases you may need to replace 9050 with 9150. Now to connect to the FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox.
Becoming SuperuserAfter logging in, if you want to become the superuser for performing administrative activities: Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything.
Changing PasswordTo change the password of a user managed by Plinth, use the change password page. However, the fbx default user is not managed by Plinth and its password cannot be changed in the web interface. To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: This will ask you for your current password before giving you the opportunity to set a new one.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Security.raw.xml b/doc/manual/en/Security.raw.xml index eb0d7475b..096ca8b26 100644 --- a/doc/manual/en/Security.raw.xml +++ b/doc/manual/en/Security.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Security32019-10-11 23:17:39SunilMohanAdapaClarify information regarding restricting console logins22016-08-31 17:40:56DrahtseilScreenshot12016-08-31 17:37:33Drahtseilcreation
SecurityWhen the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. Security.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Security32019-10-11 23:17:39SunilMohanAdapaClarify information regarding restricting console logins22016-08-31 17:40:56DrahtseilScreenshot12016-08-31 17:37:33Drahtseilcreation
SecurityWhen the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. Security.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/ServiceDiscovery.raw.xml b/doc/manual/en/ServiceDiscovery.raw.xml index 06495614f..3cee3bcbb 100644 --- a/doc/manual/en/ServiceDiscovery.raw.xml +++ b/doc/manual/en/ServiceDiscovery.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/ServiceDiscovery22017-01-02 13:17:40JamesValleroymention .local address12016-08-21 09:48:13DrahtseilCreated Service Discovery
Service DiscoveryService discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). It also allows FreedomBox to discover other devices and services running on your local network. Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/ServiceDiscovery22017-01-02 13:17:40JamesValleroymention .local address12016-08-21 09:48:13DrahtseilCreated Service Discovery
Service DiscoveryService discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). It also allows FreedomBox to discover other devices and services running on your local network. Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Shadowsocks.raw.xml b/doc/manual/en/Shadowsocks.raw.xml index 4a72be8ff..47fdddd10 100644 --- a/doc/manual/en/Shadowsocks.raw.xml +++ b/doc/manual/en/Shadowsocks.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David Jones
SOCKS5 proxy (Shadowsocks)
What is Shadowsocks?Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. Note: Shadowsocks is available in FreedomBox starting with Plinth version 0.18.
Using the Shadowsocks client?The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. Shadowsocks server is in a different region, which doesn't have these blocks. The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. At a future date it will be possible to configure FreedomBox as Shadowsocks server.
Configuring your FreedomBox for the Shadowsocks clientTo enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David Jones
SOCKS5 proxy (Shadowsocks)
What is Shadowsocks?Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. Note: Shadowsocks is available in FreedomBox starting with Plinth version 0.18.
Using the Shadowsocks client?The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. Shadowsocks server is in a different region, which doesn't have these blocks. The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. At a future date it will be possible to configure FreedomBox as Shadowsocks server.
Configuring your FreedomBox for the Shadowsocks clientTo enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Snapshots.raw.xml b/doc/manual/en/Snapshots.raw.xml index 4e558f2a2..bdd387afb 100644 --- a/doc/manual/en/Snapshots.raw.xml +++ b/doc/manual/en/Snapshots.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots module
SnapshotsSnapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. Snapshots Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots module
SnapshotsSnapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. Snapshots Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Storage.raw.xml b/doc/manual/en/Storage.raw.xml index 0f2a8e740..0d2d9e242 100644 --- a/doc/manual/en/Storage.raw.xml +++ b/doc/manual/en/Storage.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Storage112018-12-18 00:01:12JamesValleroyfix screenshot parameter102018-12-04 06:20:20JosephNuthalapatiRestrict screenshot width to 800px92018-09-25 06:01:56JosephNuthalapatiUpdate description to match current functionality82018-09-25 05:51:15JosephNuthalapatiReplace screenshot with the latest version72018-03-05 12:17:19JosephNuthalapatiRenamed from 'FreedomBox/Manual/Disks'.62018-03-05 12:16:41JosephNuthalapatiRenaming Disks to Storage52017-04-09 13:45:57JamesValleroyupdate note about issue42017-03-31 20:16:25Drahtseilupdate screenshot with "expand partition"32017-02-10 22:33:01JamesValleroyadd warning about non-functional feature22016-08-31 17:10:11Drahtseilscreenshot12016-08-31 17:09:10DrahtseilDisks creation
StorageStorage allows you to see the storage devices attached to your FreedomBox and their disk space usage. FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. Storage.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Storage112018-12-18 00:01:12JamesValleroyfix screenshot parameter102018-12-04 06:20:20JosephNuthalapatiRestrict screenshot width to 800px92018-09-25 06:01:56JosephNuthalapatiUpdate description to match current functionality82018-09-25 05:51:15JosephNuthalapatiReplace screenshot with the latest version72018-03-05 12:17:19JosephNuthalapatiRenamed from 'FreedomBox/Manual/Disks'.62018-03-05 12:16:41JosephNuthalapatiRenaming Disks to Storage52017-04-09 13:45:57JamesValleroyupdate note about issue42017-03-31 20:16:25Drahtseilupdate screenshot with "expand partition"32017-02-10 22:33:01JamesValleroyadd warning about non-functional feature22016-08-31 17:10:11Drahtseilscreenshot12016-08-31 17:09:10DrahtseilDisks creation
StorageStorage allows you to see the storage devices attached to your FreedomBox and their disk space usage. FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. Storage.png Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Syncthing.raw.xml b/doc/manual/en/Syncthing.raw.xml index 565e5cd2e..0f949bf60 100644 --- a/doc/manual/en/Syncthing.raw.xml +++ b/doc/manual/en/Syncthing.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Syncthing182019-11-11 17:00:38JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service172019-11-01 01:09:33JosephNuthalapatiMinor formatting changes162019-10-31 15:01:33JosephNuthalapatiMinor change to headings152019-10-31 14:42:33JosephNuthalapatiAdd synchronized password manager142019-10-27 05:53:05JosephNuthalapatiAdd tip to avoid using Syncthing relays132019-09-11 15:33:32fioddorCode decoration122019-06-09 11:07:46David Jones112019-06-09 11:00:48David Jonesadded information about syncthing and tor hidden service102018-03-10 04:32:57JosephNuthalapatiFix oversized image92017-10-22 14:57:58Drahtseil82017-10-22 14:57:09DrahtseilSyncthing GUI image72017-10-22 14:54:54DrahtseilSome rewording etc.62017-10-21 14:59:53DrahtseilTitel same as in Plinth GUI; standard footer; some basic restructuring before I will update the docu more in detail52017-04-04 10:39:36JosephNuthalapati42017-03-23 10:54:49JosephNuthalapatiRewrote the section on Syncthing's role in FreedomBox32017-03-23 05:12:13SunilMohanAdapaMinor formatting22017-03-23 05:11:43SunilMohanAdapaAdd note about availability of Syncthing12017-03-23 02:11:00JosephNuthalapatiCreated wiki page for Syncthing
File Synchronization (Syncthing)With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. Available since version: 0.14 Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. Syncthing web interface Syncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. To learn more about Syncthing, please visit their official website and documentation.
Synchronizing over TorSyncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: For more information, see the Syncthing documentation on using proxies.
Avoiding Syncthing RelaysSyncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices.
Using Syncthing with other applications
Password ManagerPassword managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Syncthing182019-11-11 17:00:38JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service172019-11-01 01:09:33JosephNuthalapatiMinor formatting changes162019-10-31 15:01:33JosephNuthalapatiMinor change to headings152019-10-31 14:42:33JosephNuthalapatiAdd synchronized password manager142019-10-27 05:53:05JosephNuthalapatiAdd tip to avoid using Syncthing relays132019-09-11 15:33:32fioddorCode decoration122019-06-09 11:07:46David Jones112019-06-09 11:00:48David Jonesadded information about syncthing and tor hidden service102018-03-10 04:32:57JosephNuthalapatiFix oversized image92017-10-22 14:57:58Drahtseil82017-10-22 14:57:09DrahtseilSyncthing GUI image72017-10-22 14:54:54DrahtseilSome rewording etc.62017-10-21 14:59:53DrahtseilTitel same as in Plinth GUI; standard footer; some basic restructuring before I will update the docu more in detail52017-04-04 10:39:36JosephNuthalapati42017-03-23 10:54:49JosephNuthalapatiRewrote the section on Syncthing's role in FreedomBox32017-03-23 05:12:13SunilMohanAdapaMinor formatting22017-03-23 05:11:43SunilMohanAdapaAdd note about availability of Syncthing12017-03-23 02:11:00JosephNuthalapatiCreated wiki page for Syncthing
File Synchronization (Syncthing)With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. Available since version: 0.14 Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. Syncthing web interface Syncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. To learn more about Syncthing, please visit their official website and documentation.
Synchronizing over TorSyncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: For more information, see the Syncthing documentation on using proxies.
Avoiding Syncthing RelaysSyncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices.
Using Syncthing with other applications
Password ManagerPassword managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/TinyTinyRSS.raw.xml b/doc/manual/en/TinyTinyRSS.raw.xml index cbe2180da..4a322c574 100644 --- a/doc/manual/en/TinyTinyRSS.raw.xml +++ b/doc/manual/en/TinyTinyRSS.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/TinyTinyRSS102018-03-11 03:05:29JosephNuthalapatiFix oversized images92017-10-18 13:51:27JosephNuthalapatiRemove link to source code as this wiki seems to have banned anything that starts with git.tt82017-10-18 13:47:46JosephNuthalapatiAdd importing OPML feeds and link to source code of TT-RSS Android App72017-10-18 12:58:46JosephNuthalapatiAdd documentation for automatic detection of RSS feeds and the Unsubscribe option62017-10-18 12:37:03JosephNuthalapatiAdd screenshots for subscribing to a new RSS feed52017-10-16 12:11:52SunilMohanAdapaMinor styling42017-10-16 12:08:36SunilMohanAdapaAdd information about mobile application32016-12-31 03:49:54JamesValleroyadd screenshot22016-12-31 03:44:56JamesValleroyadd user info12016-09-04 10:18:59Drahtseilstub created
News Feed Reader (Tiny Tiny RSS)Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences.
Using the Web InterfaceWhen enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through Plinth will be able to login and use this app. Tiny Tiny RSS
Adding a new feed1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. Selecting feeds 2. Select "Subscribe to feed.." from the Actions dropdown. Subscribe to feed 3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. Subscription dialog box Give the application a minute to fetch the feeds after clicking Subscribe. In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. You can try this now with the homepage of WikiNews As you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. WikiNews feed added If you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. Unsubscribe from a feed
Importing your feeds from another feed readerIn your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. OPML feeds page To import your Subscriptions.opml file into TT-RSS, Click Browse and select the file from your file system Click Import my OPML After importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go.
Using the Mobile AppThe official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/TinyTinyRSS102018-03-11 03:05:29JosephNuthalapatiFix oversized images92017-10-18 13:51:27JosephNuthalapatiRemove link to source code as this wiki seems to have banned anything that starts with git.tt82017-10-18 13:47:46JosephNuthalapatiAdd importing OPML feeds and link to source code of TT-RSS Android App72017-10-18 12:58:46JosephNuthalapatiAdd documentation for automatic detection of RSS feeds and the Unsubscribe option62017-10-18 12:37:03JosephNuthalapatiAdd screenshots for subscribing to a new RSS feed52017-10-16 12:11:52SunilMohanAdapaMinor styling42017-10-16 12:08:36SunilMohanAdapaAdd information about mobile application32016-12-31 03:49:54JamesValleroyadd screenshot22016-12-31 03:44:56JamesValleroyadd user info12016-09-04 10:18:59Drahtseilstub created
News Feed Reader (Tiny Tiny RSS)Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences.
Using the Web InterfaceWhen enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through Plinth will be able to login and use this app. Tiny Tiny RSS
Adding a new feed1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. Selecting feeds 2. Select "Subscribe to feed.." from the Actions dropdown. Subscribe to feed 3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. Subscription dialog box Give the application a minute to fetch the feeds after clicking Subscribe. In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. You can try this now with the homepage of WikiNews As you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. WikiNews feed added If you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. Unsubscribe from a feed
Importing your feeds from another feed readerIn your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. OPML feeds page To import your Subscriptions.opml file into TT-RSS, Click Browse and select the file from your file system Click Import my OPML After importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go.
Using the Mobile AppThe official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Tor.raw.xml b/doc/manual/en/Tor.raw.xml index 65336c5fb..c105d656e 100644 --- a/doc/manual/en/Tor.raw.xml +++ b/doc/manual/en/Tor.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Tor232019-11-28 22:24:36SunilMohanAdapaUpdate link to Tor Relay Guide Closes freedom-maker#169, thanks to Jamie Campbell222019-11-11 16:55:49JosephNuthalapatiRename Hidden Service to Onion Service212019-10-27 06:23:30JosephNuthalapatiAdd screenshot for using Tor SOCKS proxy with Firefox202019-10-27 06:18:47JosephNuthalapatiAdd example for using Tor SOCKS proxy with Firefox192019-06-09 10:47:56David Jonesadded two more apps to list182019-05-22 17:10:34David JonesCorrected formatting; added transition sentence.172019-05-22 17:05:45David JonesStarted a list of apps accessible via Tor162018-12-30 19:13:56Drahtseilrelay requirements152018-03-19 06:27:56JosephNuthalapatiAdd section on circumventing tor censorship142018-03-19 06:25:43JosephNuthalapatiAdd section on circumventing tor censorship132017-01-07 16:00:24JamesValleroyadd image122017-01-07 15:21:27JamesValleroyplural112016-12-31 02:19:46JamesValleroymention ssh102016-12-31 02:19:03JamesValleroyadd relay info92016-12-23 18:31:29JamesValleroyundo outline level change82016-12-23 18:30:06JamesValleroymove down outline level72016-04-10 07:14:17PhilippeBaretAdded bottom navigation link62015-12-15 16:54:58PhilippeBaretText finishing52015-12-15 16:40:11PhilippeBaret42015-12-15 16:34:38PhilippeBaretAdded Tor definition32015-09-13 14:54:59SunilMohanAdapaDemote headings one level for inclusion into manual22015-09-13 14:53:54SunilMohanAdapaAdd FreedomBox category and portal12015-09-12 15:55:05JamesValleroycreate tor page
Anonymity Network (Tor)
What is Tor?Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web.
Using Tor to browse anonymouslyTor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it.
Using Tor Onion Service to access your FreedomBoxTor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) Tor Browser - Plinth Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox.
Apps accessible via TorThe following apps can be accessed over Tor. Note that this list is not exhaustive. Calendar and Addressbook (Radicale) File Synchronization (Syncthing) Feed reader (TinyTinyRSS) Web Search (Searx) Wiki (MediaWiki) Wiki and Blog (Ikiwiki)
Running a Tor relayWhen Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in Plinth. At the bottom of the Tor page in Plinth, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. The requirements to run a relay are listed in the Tor Relay Guide. In short, it is recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM.
(Advanced) Usage as a SOCKS proxyFreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050.
Example with FirefoxYour web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. Configuring Firefox with Tor SOCKS proxy With the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations).
Circumventing Tor censorshipIf your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. 1. Get the bridge configuration from the Tor BridgeDB Tor BridgeDB 2. Add the lines to your FreedomBox Tor configuration as show below. Tor Configuration Page Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Tor232019-11-28 22:24:36SunilMohanAdapaUpdate link to Tor Relay Guide Closes freedom-maker#169, thanks to Jamie Campbell222019-11-11 16:55:49JosephNuthalapatiRename Hidden Service to Onion Service212019-10-27 06:23:30JosephNuthalapatiAdd screenshot for using Tor SOCKS proxy with Firefox202019-10-27 06:18:47JosephNuthalapatiAdd example for using Tor SOCKS proxy with Firefox192019-06-09 10:47:56David Jonesadded two more apps to list182019-05-22 17:10:34David JonesCorrected formatting; added transition sentence.172019-05-22 17:05:45David JonesStarted a list of apps accessible via Tor162018-12-30 19:13:56Drahtseilrelay requirements152018-03-19 06:27:56JosephNuthalapatiAdd section on circumventing tor censorship142018-03-19 06:25:43JosephNuthalapatiAdd section on circumventing tor censorship132017-01-07 16:00:24JamesValleroyadd image122017-01-07 15:21:27JamesValleroyplural112016-12-31 02:19:46JamesValleroymention ssh102016-12-31 02:19:03JamesValleroyadd relay info92016-12-23 18:31:29JamesValleroyundo outline level change82016-12-23 18:30:06JamesValleroymove down outline level72016-04-10 07:14:17PhilippeBaretAdded bottom navigation link62015-12-15 16:54:58PhilippeBaretText finishing52015-12-15 16:40:11PhilippeBaret42015-12-15 16:34:38PhilippeBaretAdded Tor definition32015-09-13 14:54:59SunilMohanAdapaDemote headings one level for inclusion into manual22015-09-13 14:53:54SunilMohanAdapaAdd FreedomBox category and portal12015-09-12 15:55:05JamesValleroycreate tor page
Anonymity Network (Tor)
What is Tor?Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web.
Using Tor to browse anonymouslyTor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it.
Using Tor Onion Service to access your FreedomBoxTor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) Tor Browser - Plinth Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox.
Apps accessible via TorThe following apps can be accessed over Tor. Note that this list is not exhaustive. Calendar and Addressbook (Radicale) File Synchronization (Syncthing) Feed reader (TinyTinyRSS) Web Search (Searx) Wiki (MediaWiki) Wiki and Blog (Ikiwiki)
Running a Tor relayWhen Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in Plinth. At the bottom of the Tor page in Plinth, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. The requirements to run a relay are listed in the Tor Relay Guide. In short, it is recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM.
(Advanced) Usage as a SOCKS proxyFreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050.
Example with FirefoxYour web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. Configuring Firefox with Tor SOCKS proxy With the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations).
Circumventing Tor censorshipIf your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. 1. Get the bridge configuration from the Tor BridgeDB Tor BridgeDB 2. Add the lines to your FreedomBox Tor configuration as show below. Tor Configuration Page Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Transmission.raw.xml b/doc/manual/en/Transmission.raw.xml index 2bc08f05e..223b08dc4 100644 --- a/doc/manual/en/Transmission.raw.xml +++ b/doc/manual/en/Transmission.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Transmission142019-10-27 04:42:42JosephNuthalapatiRemove irrelevant known issue132019-10-27 04:41:18JosephNuthalapatiMinor fixes122019-10-27 04:40:38JosephNuthalapati112019-09-04 09:19:59fioddorSecurity recommendation102019-03-22 07:08:45JosephNuthalapatiAdd tips on how to transfer downloads from FreedomBox to local PC92016-12-31 02:07:57JamesValleroyadd login info82016-12-30 19:20:51JamesValleroyreword72016-12-30 19:13:09JamesValleroyadd intro paragraph62016-12-30 18:59:46JamesValleroyno space in "BitTorrent"52016-12-26 18:00:44JamesValleroyadd screenshot42016-09-01 19:04:35Drahtseiladapted title to Plinth wording32016-04-10 07:27:22PhilippeBaretAdded bottom navigation link22015-12-15 20:42:02PhilippeBaret12015-12-15 18:23:33PhilippeBaretAdded Transmission page and definition
BitTorrent (Transmission)
What is Transmission ?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works".
ScreenshotTransmission Web Interface
Using TransmissionAfter installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app.
Tips
Transferring Downloads from the FreedomBoxTransmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Transmission142019-10-27 04:42:42JosephNuthalapatiRemove irrelevant known issue132019-10-27 04:41:18JosephNuthalapatiMinor fixes122019-10-27 04:40:38JosephNuthalapati112019-09-04 09:19:59fioddorSecurity recommendation102019-03-22 07:08:45JosephNuthalapatiAdd tips on how to transfer downloads from FreedomBox to local PC92016-12-31 02:07:57JamesValleroyadd login info82016-12-30 19:20:51JamesValleroyreword72016-12-30 19:13:09JamesValleroyadd intro paragraph62016-12-30 18:59:46JamesValleroyno space in "BitTorrent"52016-12-26 18:00:44JamesValleroyadd screenshot42016-09-01 19:04:35Drahtseiladapted title to Plinth wording32016-04-10 07:27:22PhilippeBaretAdded bottom navigation link22015-12-15 20:42:02PhilippeBaret12015-12-15 18:23:33PhilippeBaretAdded Transmission page and definition
BitTorrent (Transmission)
What is Transmission ?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works".
ScreenshotTransmission Web Interface
Using TransmissionAfter installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app.
Tips
Transferring Downloads from the FreedomBoxTransmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Upgrades.raw.xml b/doc/manual/en/Upgrades.raw.xml index fe46dfcf8..46ce482c5 100644 --- a/doc/manual/en/Upgrades.raw.xml +++ b/doc/manual/en/Upgrades.raw.xml @@ -9,4 +9,4 @@ Password: # apt -f install # unattended-upgrade --debug # apt install freedombox -# apt update]]>If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +# apt update]]>If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/Users.raw.xml b/doc/manual/en/Users.raw.xml index 56109f2b9..8c8c01d9e 100644 --- a/doc/manual/en/Users.raw.xml +++ b/doc/manual/en/Users.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Users82019-07-29 22:34:11JamesValleroybetter wording72019-07-29 22:22:17JamesValleroyremove "Plinth"62019-07-29 22:10:39JamesValleroymention which releases known issue applies to52019-07-29 22:08:21JamesValleroyadd more supported groups42017-01-14 20:13:01JamesValleroyadd known issue32016-12-31 04:15:09JamesValleroyreword22016-09-01 19:21:25Drahtseiladapted title to Plinth wording12016-08-21 16:48:45DrahtseilCreated Users
Users and GroupsYou can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups admin bit-torrent ed2k feed-reader syncthing web-search wiki are supported. The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). A user's groups can also be changed later-on. It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. A user's account can be deactivated, which will temporarily disable the account.
Known IssuesIn Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. This issue is fixed in Debian Buster and later. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/Users82019-07-29 22:34:11JamesValleroybetter wording72019-07-29 22:22:17JamesValleroyremove "Plinth"62019-07-29 22:10:39JamesValleroymention which releases known issue applies to52019-07-29 22:08:21JamesValleroyadd more supported groups42017-01-14 20:13:01JamesValleroyadd known issue32016-12-31 04:15:09JamesValleroyreword22016-09-01 19:21:25Drahtseiladapted title to Plinth wording12016-08-21 16:48:45DrahtseilCreated Users
Users and GroupsYou can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups admin bit-torrent ed2k feed-reader syncthing web-search wiki are supported. The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). A user's groups can also be changed later-on. It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. A user's account can be deactivated, which will temporarily disable the account.
Known IssuesIn Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. This issue is fixed in Debian Buster and later. Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/ejabberd.raw.xml b/doc/manual/en/ejabberd.raw.xml index e9761b0c0..e3f3dfecc 100644 --- a/doc/manual/en/ejabberd.raw.xml +++ b/doc/manual/en/ejabberd.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/ejabberd122019-03-01 17:43:12JosephNuthalapatiFix PageKite url112019-02-27 00:06:38JamesValleroymake title consistent with FreedomBox interface102018-03-02 13:01:38JosephNuthalapatiConsistent naming conventions92017-01-07 17:42:27JamesValleroyadd note about service restart82017-01-02 13:48:30JamesValleroyadd port forwarding info72016-12-31 03:11:19JamesValleroyclarify62016-12-31 03:10:19JamesValleroymention web client52016-12-31 02:35:52JamesValleroyadd security info42016-09-04 10:31:37Drahtseiladded links32016-04-10 07:18:35PhilippeBaretAdded bottom navigation link22015-12-15 18:37:29PhilippeBaretAdded definition to Chat server page12015-09-20 23:52:11JamesValleroyadd xmpp page
Chat Server (ejabberd)
What is XMPP?XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. With XMPP, there are two ways that conversations can be secured: TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work.
Setting the Domain NameFor XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. Please note that PageKite does not support the XMPP protocol at this time.
Registering XMPP users through SSOCurrently, all users created through Plinth will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user.
Using the web clientAfter the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name.
Using a desktop or mobile clientXMPP clients are available for various desktop and mobile platforms.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: TCP 5222 (client-to-server) TCP 5269 (server-to-server) Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
FreedomBox/Manual/ejabberd122019-03-01 17:43:12JosephNuthalapatiFix PageKite url112019-02-27 00:06:38JamesValleroymake title consistent with FreedomBox interface102018-03-02 13:01:38JosephNuthalapatiConsistent naming conventions92017-01-07 17:42:27JamesValleroyadd note about service restart82017-01-02 13:48:30JamesValleroyadd port forwarding info72016-12-31 03:11:19JamesValleroyclarify62016-12-31 03:10:19JamesValleroymention web client52016-12-31 02:35:52JamesValleroyadd security info42016-09-04 10:31:37Drahtseiladded links32016-04-10 07:18:35PhilippeBaretAdded bottom navigation link22015-12-15 18:37:29PhilippeBaretAdded definition to Chat server page12015-09-20 23:52:11JamesValleroyadd xmpp page
Chat Server (ejabberd)
What is XMPP?XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. With XMPP, there are two ways that conversations can be secured: TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work.
Setting the Domain NameFor XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. Please note that PageKite does not support the XMPP protocol at this time.
Registering XMPP users through SSOCurrently, all users created through Plinth will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user.
Using the web clientAfter the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name.
Using a desktop or mobile clientXMPP clients are available for various desktop and mobile platforms.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: TCP 5222 (client-to-server) TCP 5269 (server-to-server) Back to Features introduction or manual pages.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/en/freedombox-manual.raw.xml b/doc/manual/en/freedombox-manual.raw.xml index 987a87729..97cbb28c6 100644 --- a/doc/manual/en/freedombox-manual.raw.xml +++ b/doc/manual/en/freedombox-manual.raw.xml @@ -4,6 +4,18 @@ FreedomBox/Manual + + 80 + 2019-12-25 18:43:42 + Drahtseil + added MiniDLNA + + + 79 + 2019-12-20 19:58:30 + Drahtseil + Placed Simple Gitweb in the correct place + 78 2019-12-15 19:26:31 @@ -1811,6 +1823,15 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ] + + If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. Run the following commands: + + + + + + @@ -2351,6 +2372,31 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ] +
+ MiniDLNA + MiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. +
+ What is UPnP/DLNA? + Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. + DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to. +
+
+ Setting up MiniDLNA on your FreedomBox. + To install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. + After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it. +
+
+ File systems for external drives. + If using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language. +
+
+ External links + + + + +
+
News Feed Reader (Tiny Tiny RSS) Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. @@ -2506,6 +2552,34 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]
+
+ Simple Git Hosting (GitWeb) + Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. + To learn more on how to use Git visit Git tutorial. + Available since version: 19.19 +
+ Managing the repositories + After installation of GitWeb, a new repository can be created. It can be marked as private to limit access. +
+
+ Access + GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb +
+
+ HTTP basic auth + 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. + + Example: + + + Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. + Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. +
+
+ Mirroring + Though your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. +
+
SIP Server (repro) @@ -3119,34 +3193,6 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
-
- Simple Git Hosting (GitWeb) - Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. - To learn more on how to use Git visit Git tutorial. - Available since version: 19.19 -
- Managing the repositories - After installation of GitWeb, a new repository can be created. It can be marked as private to limit access. -
-
- Access - GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb -
-
- HTTP basic auth - 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. - - Example: - - - Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. - Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. -
-
- Mirroring - Though your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. -
-
System @@ -9990,6 +10036,50 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release Notes The following are the release notes for each FreedomBox version. +
+ FreedomBox 19.24 (2019-12-30) + + + app: Fix JavaScript doesn't run on first visit + + + samba: Add private shares + + + firewall: Support upgrading firewalld to 0.8 + + + deluge: Add systemd sandboxing features + + + infinoted: Add systemd sandboxing features + + + storage: Add systemd sandboxing features to udiskie service + + + upgrades: Add systemd sandboxing features to repository setup service + + + security: List whether each app is sandboxed + + + mediawiki: Avoid delay in update script + + + diagnostics: Use new component based API for all diagnostic tests + + + minidlna: Fix showing clients information + + + mediawiki: Fix problem with session cache failing logins + + + locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch + + +
FreedomBox 19.23 (2019-12-16) diff --git a/doc/manual/es/Apache_userdir.raw.xml b/doc/manual/es/Apache_userdir.raw.xml index 1a417cf00..965a88d3e 100644 --- a/doc/manual/es/Apache_userdir.raw.xml +++ b/doc/manual/es/Apache_userdir.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Apache_userdir42019-10-21 14:19:20fioddorCorrección menor32019-10-21 14:17:11fioddorCorrección menor22019-08-29 12:55:24fioddorCorrección menor12019-08-29 12:50:13fioddorSe crea la versión española.
Sitios Web de Usuario (User websites) (userdir)
¿Qué es User websites?User websites es un módulo del servidor web Apache habilitado para permitir a los usuarios definidos en el sistema FreedomBox exponer un conjunto de archivos del sistema de ficheros de FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos.
Datos básicos de la aplicaciónCategoría Compartición de archivos Disponible desde la versión 0.9.4Sitio web del proyecto original Documentación original de usuario
Captura de pantallaAñadir cuando/si se crea un interfaz para Plinth
Usar User websitesEl módulo está siempre activado y no ofrece configuración desde el interfaz web de Plinth. Actualmente ni siquiera muestra que exista. Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado /home/<un_usuario_de_plinth>/public_html. User websites servirá los documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html.
Usar SFTP para crear public_html y subir archivosPendiente de redactar Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Apache_userdir42019-10-21 14:19:20fioddorCorrección menor32019-10-21 14:17:11fioddorCorrección menor22019-08-29 12:55:24fioddorCorrección menor12019-08-29 12:50:13fioddorSe crea la versión española.
Sitios Web de Usuario (User websites) (userdir)
¿Qué es User websites?User websites es un módulo del servidor web Apache habilitado para permitir a los usuarios definidos en el sistema FreedomBox exponer un conjunto de archivos del sistema de ficheros de FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos.
Datos básicos de la aplicaciónCategoría Compartición de archivos Disponible desde la versión 0.9.4Sitio web del proyecto original Documentación original de usuario
Captura de pantallaAñadir cuando/si se crea un interfaz para Plinth
Usar User websitesEl módulo está siempre activado y no ofrece configuración desde el interfaz web de Plinth. Actualmente ni siquiera muestra que exista. Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado /home/<un_usuario_de_plinth>/public_html. User websites servirá los documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html.
Usar SFTP para crear public_html y subir archivosPendiente de redactar Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Backups.raw.xml b/doc/manual/es/Backups.raw.xml index f98953bb5..93c61cd89 100644 --- a/doc/manual/es/Backups.raw.xml +++ b/doc/manual/es/Backups.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Backups22019-11-14 18:14:48fioddorSe alinea con la versión 31 en inglés del 11 de noviembre de 201912019-06-18 15:14:43fioddorSe crea la versión española.
Copias de respaldo (backups)FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de Backups se resuelve con el software de backup Borg. Borg es un programa de backup con deduplicación y compresión. Está diseñado para hacer backups eficientes y seguros. Esta funcionalidad de backups se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los backups de la FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga.
Funcionalidad de Estatdos de los Backups
App/Funcionalidad Soporte en Versión Notas Avahi - no precisa backup Backups - no precisa backup Bind 0.41 Cockpit - no precisa backup Coquelicot 0.40 incluye ficheros subidos Datetime 0.41 Deluge 0.41 no incluye archivos descargados ni semillas Diagnostics - no precisa backup Dynamic DNS 0.39 ejabberd 0.39 incluye todos los datos y configuración Firewall - no precisa backup ikiwiki 0.39 incluye todos los wikis/blogs y sus contenidos infinoted 0.39 incluye todos los datos y claves JSXC - no precisa backup Let's Encrypt 0.42 Matrix Synapse 0.39 incluye media y cargas MediaWiki 0.39 incluye páginas de wiki y archivos adjuntos Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no precisa backup Networks No sin planes para implementar backup, de momento OpenVPN 0.48 incluye a todos los usuarios y claves de servidor Pagekite 0.40 Power - no precisa backup Privoxy - no precisa backup Quassel 0.40 incluye usuarios y registros de ejeución (logs) Radicale 0.39 incluye calendario y datos de tarjetas de todos los usuarios repro 0.39 incluye a todos los usuarios, datos y claves Roundcube - no precisa backup SearX - no precisa backup Secure Shell (SSH) Server 0.41 incluye las claves del servidor Security 0.41 Shadowsocks 0.40 solo secretos Sharing 0.40 no incluye datos de las carpetas compartidas Snapshot 0.41 solo configuración, no incluye datos de capturas (snapshots) Storage - no precisa backup Syncthing 0.48 no incluye datos de las carpetas compartidas Tahoe-LAFS 0.42 incluye todos los datos y configuración Tiny Tiny RSS 19.2 incluye base de datos con feeds, historias, etc. Tor 0.42 includes configuración y secretos como las claves de servicios Tor Onion Transmission 0.40 no incluye archivos descargados ni semillas Upgrades 0.42 Users No sin planes para implementar backup, de momento
Cómo instalar y usar BackupsPaso 1 Backups: Paso 1 Paso 2 Backups: Paso 2 Paso 3 Backups: Paso 3 Paso 4 Backups: Paso 4 Paso 5 Backups: Paso 5 Paso 6 Backups: Paso 6 Paso 7 Backups: Paso 7 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Backups22019-11-14 18:14:48fioddorSe alinea con la versión 31 en inglés del 11 de noviembre de 201912019-06-18 15:14:43fioddorSe crea la versión española.
Copias de respaldo (backups)FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de Backups se resuelve con el software de backup Borg. Borg es un programa de backup con deduplicación y compresión. Está diseñado para hacer backups eficientes y seguros. Esta funcionalidad de backups se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los backups de la FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga.
Funcionalidad de Estatdos de los Backups
App/Funcionalidad Soporte en Versión Notas Avahi - no precisa backup Backups - no precisa backup Bind 0.41 Cockpit - no precisa backup Coquelicot 0.40 incluye ficheros subidos Datetime 0.41 Deluge 0.41 no incluye archivos descargados ni semillas Diagnostics - no precisa backup Dynamic DNS 0.39 ejabberd 0.39 incluye todos los datos y configuración Firewall - no precisa backup ikiwiki 0.39 incluye todos los wikis/blogs y sus contenidos infinoted 0.39 incluye todos los datos y claves JSXC - no precisa backup Let's Encrypt 0.42 Matrix Synapse 0.39 incluye media y cargas MediaWiki 0.39 incluye páginas de wiki y archivos adjuntos Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no precisa backup Networks No sin planes para implementar backup, de momento OpenVPN 0.48 incluye a todos los usuarios y claves de servidor Pagekite 0.40 Power - no precisa backup Privoxy - no precisa backup Quassel 0.40 incluye usuarios y registros de ejeución (logs) Radicale 0.39 incluye calendario y datos de tarjetas de todos los usuarios repro 0.39 incluye a todos los usuarios, datos y claves Roundcube - no precisa backup SearX - no precisa backup Secure Shell (SSH) Server 0.41 incluye las claves del servidor Security 0.41 Shadowsocks 0.40 solo secretos Sharing 0.40 no incluye datos de las carpetas compartidas Snapshot 0.41 solo configuración, no incluye datos de capturas (snapshots) Storage - no precisa backup Syncthing 0.48 no incluye datos de las carpetas compartidas Tahoe-LAFS 0.42 incluye todos los datos y configuración Tiny Tiny RSS 19.2 incluye base de datos con feeds, historias, etc. Tor 0.42 includes configuración y secretos como las claves de servicios Tor Onion Transmission 0.40 no incluye archivos descargados ni semillas Upgrades 0.42 Users No sin planes para implementar backup, de momento
Cómo instalar y usar BackupsPaso 1 Backups: Paso 1 Paso 2 Backups: Paso 2 Paso 3 Backups: Paso 3 Paso 4 Backups: Paso 4 Paso 5 Backups: Paso 5 Paso 6 Backups: Paso 6 Paso 7 Backups: Paso 7 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Cockpit.raw.xml b/doc/manual/es/Cockpit.raw.xml index 3d539424a..ed1ea8778 100644 --- a/doc/manual/es/Cockpit.raw.xml +++ b/doc/manual/es/Cockpit.raw.xml @@ -4,4 +4,4 @@ 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
es/FreedomBox/Manual/Cockpit72019-11-14 18:06:47fioddorSe alinea con la versión 06 en inglés del 14 de noviembre de 201962019-11-14 18:01:18fioddorSe alinea con la versión 05 en inglés del 11 de noviembre de 201952019-08-28 07:46:04fioddorTítulo explicativo y el nombre de la app entre paréntesis como aclaración adicional42019-08-22 11:10:28fioddorSe actualiza a la versión inglesa 4 del 20 de agosto de 2019.32019-07-22 17:57:58fioddorSe incorpora la traducción de una sección nueva.22019-07-01 12:32:35fioddorClaridad.12019-07-01 09:47:44fioddorSe crea la versión española.
Administración de Servidor (Cockpit)Cockpit es una aplicación que facilita administrar servidores GNU/Linux desde el navegador web. En una FreedomBox, hay disponibles controles para muchas funciones avanzadas que normalmente no se necesitan. También hay disponible un terminal web para operaciones de consola. Cualquier usuario del grupo de administradores de to FreedomBox puede acceder a Cockpit. Cockpit solo se puede usar si tienes una configuración de nombre de dominio apropiada para tu FreedomBox y usas ese nombre de dominio para acceder a Cockpit. Para más información mira la sección de Resolución de Problemas. Usa cockpit sólo si eres un administrador de sistemas GNU/Linux con habilidades avanzadas. FreedomBox intenta coexistir con los cambios al sistema que efectúan los administradores y sus herramientas, como Cockpit. Sin embargo, los cambios al sistema inadecuados pueden causar fallos en las funciones de FreedomBox.
Usar CockpitInstala Cockpit como cualquier otra aplicación de FreedomBox. Y a continuación asegúrate de que Cockpit está habilitado. cockpit-enable.png Asegúrate de que la cuenta de usuario de FreedomBox que se empleará con Cockpit es parte del grupo de administradores. cockpit-admin-user.png Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. cockpit-login.png Empieza a usar cockpit. cockpit-system.png Cockpit también funciona con interfaces mobiles. cockpit-mobile.png
FuncionalidadesLas siguientes funcionalidades de Cockpit pueden ser útiles para usuarios avanzados de FreedomBox.
Cuadro de Mando del SistemaCockpit tiene un cuadro de mando del sistema que Muestra información detallada del hardware. Muestra métricas básicas de rendimiento del sistema. Permite cambiar la hora y el huso del sistema. Permite cambiar el hostname. Por favor usa el interfaz de usuario de FreedomBox UI para hacer esto. Muestra las huellas del servidor SSH. cockpit-system.png
Visualización de los Registros de Ejecución (logs) del SistemaCockpit permite consultar los registros de ejecución (logs) del sistema y examinarlos a todo detalle. cockpit-logs.png
Administración de AlmacenamientoCockpit permite las siguientes funciones avanzadas de almacenamiento: Visualización de llenado de discos. Edición de particiones de disco. Administración de RAID. cockpit-storage1.png cockpit-storage2.png
RedesTanto Cockpit como FreedomBox se apoyan en NetworkManager para configurar la red. No obstante, Cockpit ofrece alguna configuración avanzada no disponible en FreedomBox: Configuración de rutas. Configuración de enlaces, puentes y VLANs. cockpit-network1.png cockpit-network2.png cockpit-network3.png
ServiciosCockpit permite agendar servicios y tareas periódicas (como cron). cockpit-services1.png cockpit-services2.png
Terminal WebCockpit ofrece un terminal web que se puede usar para ejecutar tareas manuales de administración del sistema. cockpit-terminal.png
Resolución de ProblemasCockpit require un nombre de dominio adecuadamente configurado en tu FreedomBox y solo funcionará cuando accedas a él mediante una URL con ese nombre de dominio. Cockpit no funcionará con una dirección IP en la URL. Tampoco con freedombox.local como nombre de dominio. Por ejemplo, las URLs siguientes no funcionarán: A partir de la versión 19.15 funciona el dominio .local. Puedes acceder a Cockpit mediante la URL . El dominio .local se basa en tu hostname. Si tu hostname es mifb tu nombre de dominio .local será mifb.local y la URL de Cockpit será . Para acceder apropiadamente a Cockpit, usa el nombre de dominio configurado en tu FreedomBox. Cockpit también funcionará cuando se use un Servicio Tor Onion. Las siguientes URLs funcionarán: La razón para este comportamiento es que Cockpit emplea WebSockets para conectar con el servidor de backend. Por seguridad se deben evitar las peticiones a WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por FreedomBox en /etc/cockpit/cockpit.conf. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +https://exampletorhs.onion/cockpit/]]>La razón para este comportamiento es que Cockpit emplea WebSockets para conectar con el servidor de backend. Por seguridad se deben evitar las peticiones a WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por FreedomBox en /etc/cockpit/cockpit.conf. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Configure.raw.xml b/doc/manual/es/Configure.raw.xml index 29eae4655..19b31eb8b 100644 --- a/doc/manual/es/Configure.raw.xml +++ b/doc/manual/es/Configure.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Configure22019-06-18 15:50:11fioddorCorrección menor12019-06-18 15:46:38fioddorSe crea la versión española.
ConfigurarConfigurar tiene algunas opciones generales de configuración:
HostnameHostname es el nombre local por el que otros dispositivos pueden alcanzar tu FreedomBox desde la red local. El hostname por defecto es freedombox.
Nombre de DominioEl Nombre de Dominio es el nombre global por el que otros dispositivos pueden alcanzar tu FreedomBox desde la Internet. El valor que se asigne aquí es el que usarán Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), y Monkeysphere.
Página Principal (home) del Servidor WebEsta es una opción avanzada que te permite establecer como home algo diferente al servicio FreedomBox (Plinth) para que se sirva a quien acceda con el navegador al nombre de dominio de FreedomBox. Por ejemplo, si el nombre de dominio de tu FreedomBox es y estableces a MediaWiki como home, al visitar te llevará a en vez de a . Puedes asignar la home a cualquier aplicación web, los wikis y blogs de Ikiwiki o la página index.html por defecto de Apache. Una vez asignada como home otra aplicación, ya solo puedes navegar al servicio FreedomBox (Plinth) tecleando en el navegador . /freedombox también se puede usar como alias para /plinth Consejo: Guarda la URL del servicio FreedomBox (Plinth) antes de asignar la home a otra app. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Configure22019-06-18 15:50:11fioddorCorrección menor12019-06-18 15:46:38fioddorSe crea la versión española.
ConfigurarConfigurar tiene algunas opciones generales de configuración:
HostnameHostname es el nombre local por el que otros dispositivos pueden alcanzar tu FreedomBox desde la red local. El hostname por defecto es freedombox.
Nombre de DominioEl Nombre de Dominio es el nombre global por el que otros dispositivos pueden alcanzar tu FreedomBox desde la Internet. El valor que se asigne aquí es el que usarán Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), y Monkeysphere.
Página Principal (home) del Servidor WebEsta es una opción avanzada que te permite establecer como home algo diferente al servicio FreedomBox (Plinth) para que se sirva a quien acceda con el navegador al nombre de dominio de FreedomBox. Por ejemplo, si el nombre de dominio de tu FreedomBox es y estableces a MediaWiki como home, al visitar te llevará a en vez de a . Puedes asignar la home a cualquier aplicación web, los wikis y blogs de Ikiwiki o la página index.html por defecto de Apache. Una vez asignada como home otra aplicación, ya solo puedes navegar al servicio FreedomBox (Plinth) tecleando en el navegador . /freedombox también se puede usar como alias para /plinth Consejo: Guarda la URL del servicio FreedomBox (Plinth) antes de asignar la home a otra app. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Coquelicot.raw.xml b/doc/manual/es/Coquelicot.raw.xml index bb8bc662c..bb63c4344 100644 --- a/doc/manual/es/Coquelicot.raw.xml +++ b/doc/manual/es/Coquelicot.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Coquelicot22019-09-11 10:34:42fioddorCorrecciones menores.12019-09-11 10:27:55fioddorSe crea la versión española.
Compartición de Archivos (Coquelicot)
Acerca de CoquelicotCoquelicot es aplicación web para compartir archivos enfocada a proteger la privacidad de sus usuarios. El principio básico es simple: los usuarios pueden subir un archivo al servidor y a cambio reciben una URL única para descargarlo que se puede compartir con terceros. Además se puede establecer una contraseña para reforzar el acceso. Más información acerca de Coquelicot en su LEEME Disponible desde: versión 0.24.0
Cuando usar CoquelicotEl mejor uso de Coquelicot es para compartir rápidamente un archivo suelto. Si quieres compartir una carpeta... ...para usar y tirar, comprime la carpeta y compartela como archivo con Coquelicot ...que deba mantenerse sincronizada entre ordenadores usa mejor Syncthing Coquelicot también puede proporcionar un grado de privacidad razonable. Si se necesita anonimato mejor sopesas emplear la aplicación de escritorio Onionshare. Como Coquelicot carga todo el archivo al servidor tu FreedomBox consumirá ancho de banda tanto para la subida como para la descarga. Para archivos muy grandes sopesa compartirlos creando un fichero BitTorrent privado. Si se necesita anonimato usa Onionshare. Es P2P y no necesita servidor.
Coquelicot en FreedomBoxCon Coquelicot instalado puedes subir archivos a tu servidor FreedomBox y compartirlos en privado. Tras la instalación la página de Coquelicot ofrece 2 preferencias. Contraseña de Subida: Actualmente y por facilidad de uso Coquelicot está configurado en FreedomBox para usar autenticación simple por contraseña. Recuerda que se trata de una contraseña global para esta instancia de Coquelicot y no tu contraseña de usuario para FreedomBox. Tienes que acordarte de esta contraseña. Puedes establecer otra en cualquier momento desde el interfaz Plinth. Tamaño Máximo de Archivo: Puedes alterar el tamaño máximo de los archivos a transferir mediante Coquelicot usando esta preferencia. El tamaño se expresa en Mebibytes y el máximo solo está limitado por el espacio en disco de tu FreedomBox.
PrivacidadAlguien que monitorice tu tráfico de red podría averiguar que se está transfiriendo un archivo en tu FreedomBox y posiblemente también su tamaño pero no sabrá su nombre. Coquelicot cifra los archivos en el servidor y sobrescribe los contenidos con 0s al borrarlos, eliminando el riesgo de que se desvelen los contenidos del fichero si tu FreedomBox resultara confiscada o robada. El riesgo real que hay que mitigar es que además del destinatario legítimo un tercero también descargue tu fichero.
Compartir mediante mensajería instantáneaAlgunas aplicaciones de mensajería instantánea con vista previa de sitios web podrían descargar tu fichero para mostrarla (su vista previa) en la conversación. Si configuras la opción de descarga única para un archivo podrías notar que la aplicación de mensajería consume la única descarga. Si compartes mediante estas aplicaciones usa una contraseña de descarga en combinación con la opción de descarga única.
Compartir en privado enlaces de descargaSe recomienda compartir las contraseñas y los enlaces de descarga de tus archivos por canales cifrados. Puedes evitar todos los problemas anteriores con las vistas previas de la mensajería instantánea símplemente empleando aplicaciones de mensajería que soporten conversaciones cifradas como Riot con Matrix Synapse o XMPP (servidor ejabberd en FreedomBox) con clientes que soporten cifrado punto a punto. Envía la contraseña y el enlace de descarga separados en 2 mensajes distintos (ayuda que tu aplicación de mensajería soporte perfect forward secrecy como XMPP con OTR). También puedes compartir tus enlaces por correo electrónico cifrado con PGP usando Thunderbird.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Coquelicot22019-09-11 10:34:42fioddorCorrecciones menores.12019-09-11 10:27:55fioddorSe crea la versión española.
Compartición de Archivos (Coquelicot)
Acerca de CoquelicotCoquelicot es aplicación web para compartir archivos enfocada a proteger la privacidad de sus usuarios. El principio básico es simple: los usuarios pueden subir un archivo al servidor y a cambio reciben una URL única para descargarlo que se puede compartir con terceros. Además se puede establecer una contraseña para reforzar el acceso. Más información acerca de Coquelicot en su LEEME Disponible desde: versión 0.24.0
Cuando usar CoquelicotEl mejor uso de Coquelicot es para compartir rápidamente un archivo suelto. Si quieres compartir una carpeta... ...para usar y tirar, comprime la carpeta y compartela como archivo con Coquelicot ...que deba mantenerse sincronizada entre ordenadores usa mejor Syncthing Coquelicot también puede proporcionar un grado de privacidad razonable. Si se necesita anonimato mejor sopesas emplear la aplicación de escritorio Onionshare. Como Coquelicot carga todo el archivo al servidor tu FreedomBox consumirá ancho de banda tanto para la subida como para la descarga. Para archivos muy grandes sopesa compartirlos creando un fichero BitTorrent privado. Si se necesita anonimato usa Onionshare. Es P2P y no necesita servidor.
Coquelicot en FreedomBoxCon Coquelicot instalado puedes subir archivos a tu servidor FreedomBox y compartirlos en privado. Tras la instalación la página de Coquelicot ofrece 2 preferencias. Contraseña de Subida: Actualmente y por facilidad de uso Coquelicot está configurado en FreedomBox para usar autenticación simple por contraseña. Recuerda que se trata de una contraseña global para esta instancia de Coquelicot y no tu contraseña de usuario para FreedomBox. Tienes que acordarte de esta contraseña. Puedes establecer otra en cualquier momento desde el interfaz Plinth. Tamaño Máximo de Archivo: Puedes alterar el tamaño máximo de los archivos a transferir mediante Coquelicot usando esta preferencia. El tamaño se expresa en Mebibytes y el máximo solo está limitado por el espacio en disco de tu FreedomBox.
PrivacidadAlguien que monitorice tu tráfico de red podría averiguar que se está transfiriendo un archivo en tu FreedomBox y posiblemente también su tamaño pero no sabrá su nombre. Coquelicot cifra los archivos en el servidor y sobrescribe los contenidos con 0s al borrarlos, eliminando el riesgo de que se desvelen los contenidos del fichero si tu FreedomBox resultara confiscada o robada. El riesgo real que hay que mitigar es que además del destinatario legítimo un tercero también descargue tu fichero.
Compartir mediante mensajería instantáneaAlgunas aplicaciones de mensajería instantánea con vista previa de sitios web podrían descargar tu fichero para mostrarla (su vista previa) en la conversación. Si configuras la opción de descarga única para un archivo podrías notar que la aplicación de mensajería consume la única descarga. Si compartes mediante estas aplicaciones usa una contraseña de descarga en combinación con la opción de descarga única.
Compartir en privado enlaces de descargaSe recomienda compartir las contraseñas y los enlaces de descarga de tus archivos por canales cifrados. Puedes evitar todos los problemas anteriores con las vistas previas de la mensajería instantánea símplemente empleando aplicaciones de mensajería que soporten conversaciones cifradas como Riot con Matrix Synapse o XMPP (servidor ejabberd en FreedomBox) con clientes que soporten cifrado punto a punto. Envía la contraseña y el enlace de descarga separados en 2 mensajes distintos (ayuda que tu aplicación de mensajería soporte perfect forward secrecy como XMPP con OTR). También puedes compartir tus enlaces por correo electrónico cifrado con PGP usando Thunderbird.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/DateTime.raw.xml b/doc/manual/es/DateTime.raw.xml index c5f313077..27d212913 100644 --- a/doc/manual/es/DateTime.raw.xml +++ b/doc/manual/es/DateTime.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/DateTime12019-06-19 10:26:32fioddorSe crea la versión española.
Fecha y horaEste servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet. Puedes seleccionar el huso horario escogiendo una capital cercana (están ordenadas por Continente/Ciudad) o seleccionando directamente el huso en relación a GMT (Greenwich Mean Time). DateTime.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/DateTime12019-06-19 10:26:32fioddorSe crea la versión española.
Fecha y horaEste servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet. Puedes seleccionar el huso horario escogiendo una capital cercana (están ordenadas por Continente/Ciudad) o seleccionando directamente el huso en relación a GMT (Greenwich Mean Time). DateTime.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Deluge.raw.xml b/doc/manual/es/Deluge.raw.xml index 8b94c27e5..807fa51d1 100644 --- a/doc/manual/es/Deluge.raw.xml +++ b/doc/manual/es/Deluge.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Deluge22019-09-04 09:35:32fioddorCorrección menor12019-09-04 09:33:21fioddorSe crea la versión española.
BitTorrent (Deluge)
¿Qué es Deluge?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Deluge es un cliente BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (plugins).
Captura de pantallaDeluge Web UI
Configuración InicialTras instalar Deluge se puede acceder apuntando tu navegador a https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: Deluge Login La contraseña inicial es deluge. La primera vez que ingreses Deluge te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar. A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio Deluge service que se ejecutará en segundo plano. Deluge Connection Manager (Offline) Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración. Deluge Connection Manager (Online) En este punto ya estás usando Deluge. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Deluge22019-09-04 09:35:32fioddorCorrección menor12019-09-04 09:33:21fioddorSe crea la versión española.
BitTorrent (Deluge)
¿Qué es Deluge?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Deluge es un cliente BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (plugins).
Captura de pantallaDeluge Web UI
Configuración InicialTras instalar Deluge se puede acceder apuntando tu navegador a https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: Deluge Login La contraseña inicial es deluge. La primera vez que ingreses Deluge te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar. A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio Deluge service que se ejecutará en segundo plano. Deluge Connection Manager (Offline) Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración. Deluge Connection Manager (Online) En este punto ya estás usando Deluge. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Diagnostics.raw.xml b/doc/manual/es/Diagnostics.raw.xml index faf4c622e..c6f6aa03a 100644 --- a/doc/manual/es/Diagnostics.raw.xml +++ b/doc/manual/es/Diagnostics.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Diagnostics12019-06-19 10:39:40fioddorSe crea la versión española.
DiagnósticosLa prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera. Sólo haz clic Ejecutar Diagnósticos. Esto puede llevar varios minutos. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Diagnostics12019-06-19 10:39:40fioddorSe crea la versión española.
DiagnósticosLa prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera. Sólo haz clic Ejecutar Diagnósticos. Esto puede llevar varios minutos. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/DynamicDNS.raw.xml b/doc/manual/es/DynamicDNS.raw.xml index a768f8ffd..c0f7f801b 100644 --- a/doc/manual/es/DynamicDNS.raw.xml +++ b/doc/manual/es/DynamicDNS.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/DynamicDNS52019-08-20 10:59:21fioddorSe incorpora la traducción de una sección nueva.42019-08-20 10:52:54fioddorSe incorpora la traducción de una sección nueva.32019-08-20 10:35:42fioddorSe incorpora la traducción de una sección nueva.22019-08-20 10:26:28fioddorSe incorpora la traducción de una sección nueva.12019-08-20 10:15:28fioddorSe crea la versión española (traducción incompleta).
Cliente de DNS Dinamico
¿Qué es DNS Dinamico?Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades. Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor. Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu FreedomBox, como ownCloud, a Internet.
GnuDIP vs. Update URLEisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo GnuDIP o empleando el mecanismo URL de actualización. Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio. Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo.
Emplear el protocolo GnuDIPRegistra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad FreedomBox disponible en . Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona GnuDIP como tipo de servicio, introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo Dirección del servidor GnuDIP. Dynamic DNS Settings Completa la información que te ha dado tu proveedor en los campos correspondientes Nombre de Dominio, Usuario y Contraseña.
Emplear URL de actualizaciónSe implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización. Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona URL de actualización como tipo de servicio, introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo URL de actualización. Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa aceptar todos los certificados SSL. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor. Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona usar autenticación HTTP basica e introduce el usuario y la contraseña. Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto <Ip>.
Comprobar si funcionaAsegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio. Ve a la página Estado y asegúrate de que el tipo de NAT se detecta correctamente. Si tu FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: Detrás de NAT). Si tu FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet". Comprueba que el último estado de actualización no sea fallida.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/DynamicDNS52019-08-20 10:59:21fioddorSe incorpora la traducción de una sección nueva.42019-08-20 10:52:54fioddorSe incorpora la traducción de una sección nueva.32019-08-20 10:35:42fioddorSe incorpora la traducción de una sección nueva.22019-08-20 10:26:28fioddorSe incorpora la traducción de una sección nueva.12019-08-20 10:15:28fioddorSe crea la versión española (traducción incompleta).
Cliente de DNS Dinamico
¿Qué es DNS Dinamico?Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades. Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor. Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu FreedomBox, como ownCloud, a Internet.
GnuDIP vs. Update URLEisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo GnuDIP o empleando el mecanismo URL de actualización. Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio. Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo.
Emplear el protocolo GnuDIPRegistra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad FreedomBox disponible en . Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona GnuDIP como tipo de servicio, introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo Dirección del servidor GnuDIP. Dynamic DNS Settings Completa la información que te ha dado tu proveedor en los campos correspondientes Nombre de Dominio, Usuario y Contraseña.
Emplear URL de actualizaciónSe implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización. Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona URL de actualización como tipo de servicio, introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo URL de actualización. Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa aceptar todos los certificados SSL. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor. Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona usar autenticación HTTP basica e introduce el usuario y la contraseña. Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto <Ip>.
Comprobar si funcionaAsegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio. Ve a la página Estado y asegúrate de que el tipo de NAT se detecta correctamente. Si tu FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: Detrás de NAT). Si tu FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet". Comprueba que el último estado de actualización no sea fallida.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Firewall.raw.xml b/doc/manual/es/Firewall.raw.xml index cdc879d3f..69c1ef89f 100644 --- a/doc/manual/es/Firewall.raw.xml +++ b/doc/manual/es/Firewall.raw.xml @@ -14,4 +14,4 @@ firewall-cmd --permanent --zone=internal --add-port=5353/udp]]> --remove-interface=]]>Ejemplo: Para añadir un interfaz a una zona: --add-interface= firewall-cmd --permanent --zone= --add-interface=]]>Ejemplo: InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +firewall-cmd --permanent --zone=internal --add-interface=eth0]]>InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/GitWeb.raw.xml b/doc/manual/es/GitWeb.raw.xml new file mode 100644 index 000000000..4da46d771 --- /dev/null +++ b/doc/manual/es/GitWeb.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/GitWeb22019-12-17 21:25:32fioddorSe alinea con la versión 04 en inglés del 17 de diciembre de 201912019-12-15 19:00:01fioddorSe traduce una página nueva
Alojamiento Git Simple (GitWeb)GitWeb proporciona alojamiento Git en FreedomBox. Proporciona un interfaz web simple para realizar acciones comunes como ver archivos, diferencias, descripciones de cambio, etc. Disponible desde versión: 19.19
Autenticación básica HTTPActualmente el GitWeb de FreedomBox solo soporta remotos HTTP. Para evitar tener que introducir la contraseña cada vez que haces pull/push al repositorio puedes editar tu remoto para incluír credenciales. Ejemplo: Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de la red solo apreciará el nombre de dominio. Nota: Al usar este método tu contraseña se almacenará en claro en el fichero .git/config del repositorio local.
Réplicas EspejoAunque tus repositorios se albergan principalmente en tu propia FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/I2P.raw.xml b/doc/manual/es/I2P.raw.xml index 8a7a7886c..e6e3c15e7 100644 --- a/doc/manual/es/I2P.raw.xml +++ b/doc/manual/es/I2P.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/I2P62019-09-17 13:59:23fioddorCorrección52019-09-17 13:58:00fioddorCorrecciones menores.42019-09-17 13:56:45fioddorCorrección32019-09-17 13:55:36fioddorMejora menor22019-09-17 13:54:52fioddorSe crea la versión española.12019-09-17 12:37:09fioddorSe crea la versión española (traducción incompleta).
Red de Anonimato (I2P)
Acerca de I2PEl Proyecto Internet Invisible (I2P) es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios. Más información acerca de I2P en la página principal del proyecto.
Servicios OfrecidosLos siguientes servicios se ofrecen en FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de FreedomBox. Navegación web anónima: I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a freedombox.local (o la IP local de tu FreedomBox) con sus respectivos puertos a 4444 y 4445. Este servicio está disponible sólo cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P. Acceso a eepsites: La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P. Descargas anónima de torrentes: I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red BitTorrent está disponible y habilitada por defecto en FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección Torrentes Anonimos de la app I2P en el interfaz web de FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Red IRC: La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con freedombox.local (o la IP local de tu FreedomBox) en el puerto 6668. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P. Consola de enrutado I2P: Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). \ No newline at end of file +
es/FreedomBox/Manual/I2P62019-09-17 13:59:23fioddorCorrección52019-09-17 13:58:00fioddorCorrecciones menores.42019-09-17 13:56:45fioddorCorrección32019-09-17 13:55:36fioddorMejora menor22019-09-17 13:54:52fioddorSe crea la versión española.12019-09-17 12:37:09fioddorSe crea la versión española (traducción incompleta).
Red de Anonimato (I2P)
Acerca de I2PEl Proyecto Internet Invisible (I2P) es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios. Más información acerca de I2P en la página principal del proyecto.
Servicios OfrecidosLos siguientes servicios se ofrecen en FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de FreedomBox. Navegación web anónima: I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a freedombox.local (o la IP local de tu FreedomBox) con sus respectivos puertos a 4444 y 4445. Este servicio está disponible sólo cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P. Acceso a eepsites: La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P. Descargas anónima de torrentes: I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red BitTorrent está disponible y habilitada por defecto en FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección Torrentes Anonimos de la app I2P en el interfaz web de FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Red IRC: La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con freedombox.local (o la IP local de tu FreedomBox) en el puerto 6668. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P. Consola de enrutado I2P: Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). \ No newline at end of file diff --git a/doc/manual/es/Ikiwiki.raw.xml b/doc/manual/es/Ikiwiki.raw.xml index a5b74fab5..a4fe18e99 100644 --- a/doc/manual/es/Ikiwiki.raw.xml +++ b/doc/manual/es/Ikiwiki.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Ikiwiki32019-09-17 12:09:26fioddorMejora menor22019-09-17 12:07:08fioddorMejora menor12019-09-17 12:05:55fioddorSe crea la versión española.
Wiki y Blog (Ikiwiki)
¿Qué es Ikiwiki?Ikiwiki convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (plugins).
Inicio rápidoTras instalar la app en el interfaz de administración de tu FreedomBox: Ve a la sección Crear y crea un wiki o un blog. Vuelve a la sección Configurar y haz clic en el enlace /ikiwiki. Haz clic en el nombre de tu nuevo wiki o blog bajo Directorio Padre. Disfruta de tu nueva página de publicación.
Crear un wiki o blogPuedes crear un wiki o blog para albergarlo en tu FreedomBox mediante la página Wiki y Blog (Ikiwiki) de Plinth. La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki. Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en Actualizar configuración verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador. ikiwiki: Create
Acceder a tu wiki o blogDesde la página de Wiki y Blog (Ikiwiki) selecciona la solapa Administrar y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog. ikiwiki: Manage Desde aquí, si le das a Editar o a Preferencias se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa Otros, introduce el usuario y la contraseña y haz clic en Ingresar.
Ingreso único de usuarios (SSO)Se puede dar permiso para editar a otros usuarios de FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki. Para añadir a un usuario al wiki ve a la página Usuarios y Grupos de Plinth (bajo Configuración del Sistema, el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo wiki. (Los usuarios del grupo admin tendrán también acceso al wiki.) Para ingresar como usuario FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa Otros. Luego haz clic en el botón Ingresar con autenticación HTTP. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de FreedomBox.
Añadir usuarios FreedomBox como admnistradores de wikiIngresa al wiki con su cuenta de administrador. Haz clic en Preferencias y luego en Configurar. Debajo de Principal, en usuarios administradores de algún wiki, añade el nombre de un usuario de FreedomBox. (Opcional) Desmarca la opción habilitar autenticación mediante contraseña de extensión de autenticación: autenticación mediante contraseña. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.) Haz clic en Grabar Configuración. Pulsa Preferencias y a continuación Salir. Ingresa como el nuevo usuario administrador usando Ingresar con autenticación HTTP. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Ikiwiki32019-09-17 12:09:26fioddorMejora menor22019-09-17 12:07:08fioddorMejora menor12019-09-17 12:05:55fioddorSe crea la versión española.
Wiki y Blog (Ikiwiki)
¿Qué es Ikiwiki?Ikiwiki convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (plugins).
Inicio rápidoTras instalar la app en el interfaz de administración de tu FreedomBox: Ve a la sección Crear y crea un wiki o un blog. Vuelve a la sección Configurar y haz clic en el enlace /ikiwiki. Haz clic en el nombre de tu nuevo wiki o blog bajo Directorio Padre. Disfruta de tu nueva página de publicación.
Crear un wiki o blogPuedes crear un wiki o blog para albergarlo en tu FreedomBox mediante la página Wiki y Blog (Ikiwiki) de Plinth. La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki. Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en Actualizar configuración verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador. ikiwiki: Create
Acceder a tu wiki o blogDesde la página de Wiki y Blog (Ikiwiki) selecciona la solapa Administrar y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog. ikiwiki: Manage Desde aquí, si le das a Editar o a Preferencias se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa Otros, introduce el usuario y la contraseña y haz clic en Ingresar.
Ingreso único de usuarios (SSO)Se puede dar permiso para editar a otros usuarios de FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki. Para añadir a un usuario al wiki ve a la página Usuarios y Grupos de Plinth (bajo Configuración del Sistema, el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo wiki. (Los usuarios del grupo admin tendrán también acceso al wiki.) Para ingresar como usuario FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa Otros. Luego haz clic en el botón Ingresar con autenticación HTTP. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de FreedomBox.
Añadir usuarios FreedomBox como admnistradores de wikiIngresa al wiki con su cuenta de administrador. Haz clic en Preferencias y luego en Configurar. Debajo de Principal, en usuarios administradores de algún wiki, añade el nombre de un usuario de FreedomBox. (Opcional) Desmarca la opción habilitar autenticación mediante contraseña de extensión de autenticación: autenticación mediante contraseña. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.) Haz clic en Grabar Configuración. Pulsa Preferencias y a continuación Salir. Ingresa como el nuevo usuario administrador usando Ingresar con autenticación HTTP. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Infinoted.raw.xml b/doc/manual/es/Infinoted.raw.xml index 31358937d..9bd1e785a 100644 --- a/doc/manual/es/Infinoted.raw.xml +++ b/doc/manual/es/Infinoted.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Infinoted22019-09-12 11:09:53fioddorMejora menor12019-09-12 11:08:05fioddorSe crea la versión española.
Servidor Gobby (infinoted)Infinoted es un servidor de edición colaborativa de textos para Gobby. Para usarlo descarga el cliente Gobby para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu FreedomBox.
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted: TCP 6523 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Infinoted22019-09-12 11:09:53fioddorMejora menor12019-09-12 11:08:05fioddorSe crea la versión española.
Servidor Gobby (infinoted)Infinoted es un servidor de edición colaborativa de textos para Gobby. Para usarlo descarga el cliente Gobby para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu FreedomBox.
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted: TCP 6523 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/LetsEncrypt.raw.xml b/doc/manual/es/LetsEncrypt.raw.xml index 289b71889..f8f77ea07 100644 --- a/doc/manual/es/LetsEncrypt.raw.xml +++ b/doc/manual/es/LetsEncrypt.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/LetsEncrypt22019-08-20 12:56:47fioddorSe incorpora la traducción de una sección nueva.12019-08-20 12:48:05fioddorSe incorpora la traducción de una sección nueva.
Certificados (Let's Encrypt)Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio. Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio.
Por Qué Usar CertificadosLa comunicación con tu FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios.
Cómo configurarSi tu FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos: TCP 80 (http) TCP 443 (https) Publica tu nombre de dominio: En Configurar inserta tu nombre de dominio, p.ej. MiWeb.com Let's Encrypt Verifica que se aceptó tu nombre de dominio Comprueba que está habilitado en Nombres de Servicio Let's Encrypt Name Services Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtain" de tu nombre de dominio. Tras algunos minutos estará disponible un certificado válido Let's Encrypt Verifica en tu navegador comprobando https://MiWeb.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsarEl certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente. Ejecutando diagnostics se puede también verificar el certificado. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/LetsEncrypt22019-08-20 12:56:47fioddorSe incorpora la traducción de una sección nueva.12019-08-20 12:48:05fioddorSe incorpora la traducción de una sección nueva.
Certificados (Let's Encrypt)Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio. Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio.
Por Qué Usar CertificadosLa comunicación con tu FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios.
Cómo configurarSi tu FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos: TCP 80 (http) TCP 443 (https) Publica tu nombre de dominio: En Configurar inserta tu nombre de dominio, p.ej. MiWeb.com Let's Encrypt Verifica que se aceptó tu nombre de dominio Comprueba que está habilitado en Nombres de Servicio Let's Encrypt Name Services Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtain" de tu nombre de dominio. Tras algunos minutos estará disponible un certificado válido Let's Encrypt Verifica en tu navegador comprobando https://MiWeb.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsarEl certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente. Ejecutando diagnostics se puede también verificar el certificado. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/MLDonkey.raw.xml b/doc/manual/es/MLDonkey.raw.xml index 8d1702eea..65a947139 100644 --- a/doc/manual/es/MLDonkey.raw.xml +++ b/doc/manual/es/MLDonkey.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/MLDonkey22019-09-11 14:51:57fioddorCorrecciones menores.12019-09-11 14:46:33fioddorSe crea la versión española.
Compartición de Archivos (MLDonkey)
¿Qué es MLDonkey?MLDonkey es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor back-end sobre muchas plataformas. Se puede controlar mediante algún interfaz front-end, ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), BitTorrent, DC++ y más. Más información acerca de MLDonkey en el Wiki del Proyecto MLDonkey Disponible desde: versión 0.48.0
Captura de PantallaMLDonkey Web Interface
Usar el Interfaz Web MLDonkeyTras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ed2k y admin en https://<tu_freedombox>/mldonkey.
Usar el Interfaz para Escritorio/MóvilSe pueden usar muchas aplicaciones de escritorio y móviles para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de FreedomBox. Por restricciones de acceso via SSH a la FreedomBox solo los usuarios del grupo admin pueden acceder a su MLDonkey. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. Para más información lee acerca de los túneles SSH en la documentación MLDonkey. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/MLDonkey22019-09-11 14:51:57fioddorCorrecciones menores.12019-09-11 14:46:33fioddorSe crea la versión española.
Compartición de Archivos (MLDonkey)
¿Qué es MLDonkey?MLDonkey es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor back-end sobre muchas plataformas. Se puede controlar mediante algún interfaz front-end, ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), BitTorrent, DC++ y más. Más información acerca de MLDonkey en el Wiki del Proyecto MLDonkey Disponible desde: versión 0.48.0
Captura de PantallaMLDonkey Web Interface
Usar el Interfaz Web MLDonkeyTras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ed2k y admin en https://<tu_freedombox>/mldonkey.
Usar el Interfaz para Escritorio/MóvilSe pueden usar muchas aplicaciones de escritorio y móviles para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de FreedomBox. Por restricciones de acceso via SSH a la FreedomBox solo los usuarios del grupo admin pueden acceder a su MLDonkey. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. Para más información lee acerca de los túneles SSH en la documentación MLDonkey. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/MatrixSynapse.raw.xml b/doc/manual/es/MatrixSynapse.raw.xml index 5dc79a034..bf86f0c4a 100644 --- a/doc/manual/es/MatrixSynapse.raw.xml +++ b/doc/manual/es/MatrixSynapse.raw.xml @@ -7,4 +7,4 @@ chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml systemctl restart matrix-synapse register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]>Si quieres ver la lista de usuarios registrados en Matrix Syanpse haz lo siguiente como usuario root: Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]]>Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/MediaWiki.raw.xml b/doc/manual/es/MediaWiki.raw.xml index 815dc8764..abcc0f7dc 100644 --- a/doc/manual/es/MediaWiki.raw.xml +++ b/doc/manual/es/MediaWiki.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/MediaWiki62019-10-14 08:01:12fioddorEnlace a nueva página traducida.52019-10-11 00:38:07SunilMohanAdapaRemove formatting on link to MediaWiki page that is causing issues with PDF conversion42019-09-17 11:26:11fioddorMejora menor32019-09-17 11:24:09fioddorCorrección menor22019-09-17 11:22:32fioddorMejora menor12019-09-17 11:21:21fioddorSe crea la versión española.
Wiki (MediaWiki)
Acerca de MediaWikiMediaWiki es el software de base de la gama de wikis Wikimedia. Lee más acerca de MediaWiki en Wikipedia Disponible desde: versión 0.20.0
MediaWiki en FreedomBoxMediaWiki viene configurado en FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (spam) y otros vandalismos en tu wiki.
Administración de UsuariosSolo el administrador de MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de MediaWiki del interfaz Plinth.
Casos de usoMediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (plugins) y estilos estéticos.
Repositorio Personal de ConocimientoEl MediaWiki de FreedomBox puede ser tu propio repositorio de conocimiento personal. Como MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de MediaWiki.
Wiki ComunitarioUna comunidad de usuarios podría usar MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia.
Sitio Web Personal implementado mediante un WikiVarios sitios web de internet son sólo instancias de MediaWiki. El MediaWiki de FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs.
Editar Contenido del Wiki
Editor VisualComo su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Por desgracia aún no está disponible en la versión actual de MediaWiki en Debian. Una solución temporal posible sería escribir tu contenido con el Editor Visual del borrador de Wikipedia, cambiar el modo de edición a texto y copiarlo a tu wiki.
Otros FormatosNo es imprescindible que aprendas el lenguaje de formateo de MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de MediaWiki usando Pandoc.
Cargar ImágenesSe puede habilitar la carga de imágenes desde FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada Instant Commons.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/MediaWiki62019-10-14 08:01:12fioddorEnlace a nueva página traducida.52019-10-11 00:38:07SunilMohanAdapaRemove formatting on link to MediaWiki page that is causing issues with PDF conversion42019-09-17 11:26:11fioddorMejora menor32019-09-17 11:24:09fioddorCorrección menor22019-09-17 11:22:32fioddorMejora menor12019-09-17 11:21:21fioddorSe crea la versión española.
Wiki (MediaWiki)
Acerca de MediaWikiMediaWiki es el software de base de la gama de wikis Wikimedia. Lee más acerca de MediaWiki en Wikipedia Disponible desde: versión 0.20.0
MediaWiki en FreedomBoxMediaWiki viene configurado en FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (spam) y otros vandalismos en tu wiki.
Administración de UsuariosSolo el administrador de MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de MediaWiki del interfaz Plinth.
Casos de usoMediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (plugins) y estilos estéticos.
Repositorio Personal de ConocimientoEl MediaWiki de FreedomBox puede ser tu propio repositorio de conocimiento personal. Como MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de MediaWiki.
Wiki ComunitarioUna comunidad de usuarios podría usar MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia.
Sitio Web Personal implementado mediante un WikiVarios sitios web de internet son sólo instancias de MediaWiki. El MediaWiki de FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs.
Editar Contenido del Wiki
Editor VisualComo su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Por desgracia aún no está disponible en la versión actual de MediaWiki en Debian. Una solución temporal posible sería escribir tu contenido con el Editor Visual del borrador de Wikipedia, cambiar el modo de edición a texto y copiarlo a tu wiki.
Otros FormatosNo es imprescindible que aprendas el lenguaje de formateo de MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de MediaWiki usando Pandoc.
Cargar ImágenesSe puede habilitar la carga de imágenes desde FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada Instant Commons.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Minetest.raw.xml b/doc/manual/es/Minetest.raw.xml index 27ab485eb..a715e7e9d 100644 --- a/doc/manual/es/Minetest.raw.xml +++ b/doc/manual/es/Minetest.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Minetest22019-09-04 09:50:46fioddorCorrección menor12019-09-04 09:50:27fioddorSe crea la versión española.
Block Sandbox (Minetest)Minetest es un Block Sandbox multijugador para mundos infinitos. Este módulo permite ejecutar el servidor Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un cliente de Minetest.
Enrutado de PuertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest: UDP 30000 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Minetest22019-09-04 09:50:46fioddorCorrección menor12019-09-04 09:50:27fioddorSe crea la versión española.
Block Sandbox (Minetest)Minetest es un Block Sandbox multijugador para mundos infinitos. Este módulo permite ejecutar el servidor Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un cliente de Minetest.
Enrutado de PuertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest: UDP 30000 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/MiniDLNA.raw.xml b/doc/manual/es/MiniDLNA.raw.xml new file mode 100644 index 000000000..b254f22ce --- /dev/null +++ b/doc/manual/es/MiniDLNA.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/MiniDLNA12019-12-25 21:05:55fioddorSe traduce una página nueva
MiniDLNAMiniDLNA es un servidor multimedia que intenta ser compatible con clientes DLNA/UPnP.
¿Qué es UPnP/DLNA?UPnP (Universal plug & play) es un conjunto de protocolos de red que permite a los dispositivos de una red, como PCs, TVs, impresoras etc, reconocerse entre sí y establecer comunicación para compartir datos. Es un protocolo con cero configuración y require solo un servidor multimedia y un reproductor multimedia compatibles con el protocolo. DLNA se deriva de UPnP como una forma de estandarizar interoperabilidad entre medios. Conforma un estándar/certificación que cumplen muchos dispositivos electrónicos de consumo.
Desplegando MiniDLNA en tu FreedomBox.Para instalar/habilitar el servidor multimedia necesitas navegar a la página MiniDLNA y habilitarlo. Se intenta que la aplicación esté disponible en la red interna y por ello requiere asignarle un interfaz de red configurado para tráfico interno. Tras la instalación queda disponible una página web en . Incluye información de cuántos ficheros detecta el servidor, cuántas conexiones existen etc. Esto resulta muy útil cuando conectas discos externos con contenido para para verificar que detecta los nuevos archivos como debe. Si no ocurre así, desconectar y activar el servidor lo arreglará.
Sistemas de archivo para discos externos.Al usar un disco externo que se usa también desde sistemas Windows el mejor formato para el sistema de archivos es NTFS. NTFS conservará los permisos de acceso de Linux y la codificación UTF-8 para los nombres de fichero. Esto es útil si los nombres de archivos tienen tildes, eñes u otros signos raros.
Enlaces externos (en) Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Monkeysphere.raw.xml b/doc/manual/es/Monkeysphere.raw.xml index 516e44b4d..9f5faec7c 100644 --- a/doc/manual/es/Monkeysphere.raw.xml +++ b/doc/manual/es/Monkeysphere.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Monkeysphere12019-08-23 10:48:17fioddorSe crea la versión española.
MonkeysphereCon Monkeysphere se puede generar una clave OpenPGP para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la documentación de Monkeysphere SSH. Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el sitio web de Monkeysphere. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Monkeysphere12019-08-23 10:48:17fioddorSe crea la versión española.
MonkeysphereCon Monkeysphere se puede generar una clave OpenPGP para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la documentación de Monkeysphere SSH. Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el sitio web de Monkeysphere. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Mumble.raw.xml b/doc/manual/es/Mumble.raw.xml index c3d518561..9ac52e294 100644 --- a/doc/manual/es/Mumble.raw.xml +++ b/doc/manual/es/Mumble.raw.xml @@ -3,4 +3,4 @@ PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN' 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
es/FreedomBox/Manual/Mumble32019-11-14 16:30:35fioddorCorrecciones menores22019-11-14 16:29:09fioddorSe alinea con la versión 09 del 07 de noviembre de 201912019-09-16 10:58:59fioddorSe crea la versión española.
Conversaciones de Voz (Mumble)
¿Qué es Mumble?Mumble es un software de conversaciones de voz. Principalmente diseñado para uso con juegos multijugador por red, sirve para hablar con alta calidad de audio, cancelación de ruido, comunicación cifrada, autenticación de interlocutores por defecto mediante par de claves pública/privada, y "asistentes" para configurar tu micrófono, por ejemplo. Se puede marcar a un usuario dentro de un canal como "interlocutor prioritario".
Usar MumbleFreedomBox incluye el servidor Mumble. Para conectar con el servidor los usuarios pueden descargar algún cliente de entre los disponibles para plataformas de escritorio y móviles.
Redirección de PuertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Mumble: TCP 64738 UDP 64738
Administrar PermisosEn Mumble un supeusuario puede crear cuentas de administrador que a su vez pueden administrar permisos a grupos y canales. Esto se puede hacer tras ingresar con el usuario "SuperUser" y la contraseña de superusuario. Ver la Guía de Mumble para obtener información respecto a cómo hacer esto. Actualmente FreedomBox no ofrece una interfaz gráfica para obtener o establecer la contraseña de superusuario en Mumble. Se genera una contraseña de superusuario automáticamente durante la instalación de Mumble. Para obtenerla ingresa en el terminal como admin usando Cockpit , la Shell Segura o la consola. Y ejecuta el siguiente comando: Deberás ver una salida como esta: 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]>O puedes establecer una contraseña nueva así: Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc/mumble-server.ini --readsupw"]]>Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/NameServices.raw.xml b/doc/manual/es/NameServices.raw.xml index 1f9c372b4..3ac619f86 100644 --- a/doc/manual/es/NameServices.raw.xml +++ b/doc/manual/es/NameServices.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/NameServices22019-11-14 18:09:00fioddorSe alinea con la versión 04 en inglés del 11 de noviembre de 201912019-06-20 15:23:22fioddorSe crea la versión española.
Servicios de NombreLos Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio Tor Onion y cometa (Pagekite). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/NameServices22019-11-14 18:09:00fioddorSe alinea con la versión 04 en inglés del 11 de noviembre de 201912019-06-20 15:23:22fioddorSe crea la versión española.
Servicios de NombreLos Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio Tor Onion y cometa (Pagekite). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Networks.raw.xml b/doc/manual/es/Networks.raw.xml index c41419bfd..a6ba28b82 100644 --- a/doc/manual/es/Networks.raw.xml +++ b/doc/manual/es/Networks.raw.xml @@ -6,4 +6,4 @@ wifi.scan-rand-mac-address=no]]>Luego reinicia la FreedomBox.
Añadir un nuevo dispositivo de redAl añadir un nuevo dispositivo de red network manager lo configurará automáticamente. En la mayoría de los casos esto no funcionará. Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión". Configura la zona del cortafuegos como corresponda. Puedes configurar los interfaces para conectar a la red o proporcionar configuración de red a cualquier máquina que se le conecte. De modo similar, si es un interfaz Wi-Fi puedes configurarlo para ser un punto de acceso Wi-FI o para conectarse a puntos de acceso existentes en la red.
Configurar una red MeshFreedomBox tiene un soporte rudimentario para participar en redes mesh basadas en BATMAN-Adv. Es posible unirse a una red existe en tu zona o crear una red mesh nueva y compartir tu conexión a Internet con el resto de nodos que se unan a tu red. Tanto para unirte a una red mesh como para crear otra, actualmente hay que crear 2 conexiones y activarlas manualmente.
Unirse a una red MeshPara unirse a una red mesh existente en tu zona primero consulta a sus organizadores y obtén información acerca de la red. Crea una conexión nueva y selecciona el tipo de conexión Wi-Fi. En el siguiente diálogo rellena los valores como se indica:
Nombre del campoValor de ejemploExplicación Nombre de la Conexión Mesh Join - BATMAN El nombre tiene que acabar en BATMAN (con mayúsculas). Interfaz físico wlan0 El dispositivo Wi-Fi que quieres usar para conectar a la red mesh. Zona del cortafuegos Externa Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. SSID ch1.freifunk.net Tal como te lo hayan dado los operadores de la red mesh. Esta red debería mostrarse en Redes Wi-Fi accesibles. Modo Ad-hoc Porque esta red es una red de pares (peer-to-peer). Banda de Frecuencia 2.4Ghz Tal como te lo hayan dado los operadores de la red mesh. Canal 1 Tal como te lo hayan dado los operadores de la red mesh. BSSID 12:CA:FF:EE:BA:BE Tal como te lo hayan dado los operadores de la red mesh. Autenticación Abierta Déjala abierta salvo que sepas que tu red mesh necesite otro valor. Contraseña Déjala en blanco salvo que sepas el valor que necesite tu red mesh. Método de direccionamiento IPv4 Deshabilitado Todavía no queremos pedir una configuración IP. Graba la conexión y únete a la red mesh activándola. Crea una segunda conexión nueva y selecciona el tipo Genérica. En el siguiente diálogo rellena los valores como se indica: Nombre del campoValor de ejemploExplicación Nombre de la Conexión Mesh Connect Cualquier nombre para identificar ésta conexión. Interfaz físico bat0 Este interfaz solo aparecerá tras activar con éxito la conexión del paso anterior. Zona del cortafuegos Externa Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. Método de direccionamiento IPv4 Auto Generalmente las redes mesh tienen un servidor DHCP en algún sitio que le proporciona una configuración IP a tu máquina. Si no, consulta al operador y configura la dirección IP como te diga por el método manual. Graba la conexión. Configura tu maquina para participar en la red activando esta conexión. Actualmente hay que activarla manualmente cada vez que quieras unirte a la red. En el futuro FreedomBox lo hará automáticamente. Ahora debieras poder llegar a otros nodos de la red. También podrás conectar a Internet a través de la red mesh si los operadores han instalado algúna puerta de enlace.
Crear una red MeshPara crear tu propia red mesh y compartir tu conexión a Internet con el resto de los nodos de la red: Sigue las instrucciones del paso 1 de Unirse a una red Mesh empleando los valores válidos para tu red en SSID (un nombre para tu red Mesh), Banda de Frecuencia (generalmente 2.4Ghz), Canal (entre 1 y 11 para la banda de 2.4Ghz) y BSSID (una secuencia hexadecimal como 12:CA:DE:AD:BE:EF). Crea esta conexión y actívala. Sigue las instrucciones del paso 2 de Unirse a una red Mesh seleccionando Compartido para Método de direccionamiento IPv4d. Esto proporcionará automáticamente una configuración IP a otros nodos de la red y compartirá la conexión a Internet de tu maquina (ya sea mediante un segudo interfaz Wi-Fi, Ethernet, etc.) con el otros nodos de la red mesh. Corre la voz entre tus vecinos acerca de tu red mesh y pásales los parámetros que has empleado al crearla. Cuando otros nodos se conecten a esta red mesh tendrán que seguir las instrucciones del paso 1 de Unirse a una red Mesh empleando en SSID, Banda de Frecuencia y Canal los valores que has elegido para tu red mesh al crearla.
Operación de Red ManualFreedomBox configura redes automáticamente por defecto y proporciona un interfaz simplificado para personalizar la configuración a necesidades específicas. En la mayoría de los casos la operación manual no es necesaria. Los siguientes pasos describen cómo operar la configuración de red a mano en caso de que el interfaz de FreedomBox le resulte insuficiente a un usuario para realizar una tarea o para diagnosticar un problema que FreedomBox no identifique. En el interfaz de línea de comandos: Para acceder a un interfaz de configuración de conexiones de red basado en texto: Para ver la lista de dispositivos de red disponibles: Para ver la lista de conexiones configuradas: Para ver el estado actual de una conexión: ']]>Para ver la zona asignada actualmente en el cortafuegos a un interfaz de red: ' | grep zone]]>o Para crear una conexión nueva: " ifname "" type ethernet nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]>Para cambiarle la zona a una conexión en el cortafuegos: " connection.zone ""]]>Para más información acerca del uso del comando nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección Cortafuegos.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +nmcli con modify "" connection.zone internal]]>Para cambiarle la zona a una conexión en el cortafuegos: " connection.zone ""]]>Para más información acerca del uso del comando nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección Cortafuegos. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/OpenVPN.raw.xml b/doc/manual/es/OpenVPN.raw.xml index bcb83704a..e57c7b775 100644 --- a/doc/manual/es/OpenVPN.raw.xml +++ b/doc/manual/es/OpenVPN.raw.xml @@ -5,4 +5,4 @@
es/FreedomBox/Manual/OpenVPN52019-11-20 11:00:10fioddorSe alinea con la versión 16 en inglés del 18 de noviembre de 201942019-10-10 19:50:32JosephNuthalapatiFix FreedomBox Portal include in the footer32019-09-16 09:36:03fioddorCorrección menor22019-09-16 09:34:40fioddorCorrección menor12019-09-16 09:32:56fioddorSe crea la versión española.
Red Privada Virtual (OpenVPN)
¿Qué es OpenVPN?OpenVPN proporciona un servicio de red privada virtual a tu FreedomBox. Puedes usar este software para acceso remoto, VPNs punto-a-punto y seguridad Wi-Fi. OpenVPN incluye soporte para direcciones IP dinámicas y NAT.
Redirección de puertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos para OpenVPN: UDP 1194
ConfigurarEn el menú de apps de Plinth selecciona Red Privada Virtual (OpenVPN) y haz clic en Instalar. Tras instalar el módulo todavía queda un paso de configuración que puede llevar largo tiempo completar. Haz clic en "Iniciar configuración" para empezar. OpenVPN service page Espera a que termine la configuración. Puede tardar un rato. Una vez completada la configuración del servidor OpenVPN puedes descargar tu perfil. Esto descargará un archivo llamado <usuario>.ovpn, siendo <usuario> un usuario de FreedomBox. Todos los usuarios de FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar. El archivo ovpn contiene toda la información que necesita un cliente vpn para conectar con un servidor. El perfil descargado contiene el nombre de dominio de FreedomBox al que debe conectarse el cliente. Este se obtiene del dominio configurado en la sección 'Configuración' de la página de 'Sistema'. En caso de que tu dominio no esté configurado adecuadamente quizá necesites cambiar este valor después de descargar el perfil. Si tu cliente OpenVPN lo permite puedes hacer esto después de importar el perfil OpenVPN. De lo contrario puedes editar el perfil .ovpn con un editor de texto y cambiar la línea 'remote' para que contenga la dirección IP WAN o el hostname de tu FreedomBox como se indica aquí.
Navegar por Internet tras conectar a una VPNTras conectar a la VPN el dispositivo cliente podrá navegar por Internet sin más configuración adicional. No obstante una pre-condición para que esto funcione es que necesitas tener al menos 1 interfaz (tarjeta) de red conectado a Internet en la zona Externa del cortafuegos. Usa la página de configuración de redes para editar la zona del cortafuegos con los interfaces (tarjetas) de red del dispositivo.
Uso
En Android/LineageOSVisita la página principal de FreedomBox. Ingresa con tu cuenta de usuario. Desde la página principal descarga el perfil OpenVPN. El archivo se llamará <usuario>.ovpn. OpenVPN Download Profile Descarga un cliente OpenVPN como OpenVPN for Android. Se recomienda el repositorio F-Droid. En la app, selecciona Importar perfil. OpenVPN App En el diálogo Seleccionar perfil elige el archivo <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. OpenVPN import profile El perfil recién creado aparecera. Si hace falta edita el perfil y pon el nombre de dominio de tu FreedomBox como dirección de servidor. OpenVPN profile created OpenVPN edit domain name Conecta haciendo clic sobre el perfil. OpenVPN connect OpenVPN connected Cuando esté desconecta haciendo clic sobre el perfil. OpenVPN disconnect
En DebianInstala un cliente OpenVPN para tu sistema Abre el archivo ovpn con el cliente OpenVPN. .ovpn]]>
Comprobar si estás conectado
En DebianTrata de hacer ping a tu FreedomBox u otros dispositivos de tu red. El comando ip addr debe mostrar una conexión tun0. El comando traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. Si usas Network Manager puedes crear una conexión nueva importando el fichero: .ovpn]]>
Enlaces Externos Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +$ sudo nmcli connection import type openvpn file /ruta/a/.ovpn]]>
Enlaces Externos Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/PageKite.raw.xml b/doc/manual/es/PageKite.raw.xml index 57b06ad57..d52205feb 100644 --- a/doc/manual/es/PageKite.raw.xml +++ b/doc/manual/es/PageKite.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/PageKite12019-06-20 15:13:14fioddorSe crea la versión española.
Visibilidad Publica (PageKite)
¿Qué es PageKite?PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar PageKite require ana cuenta en un servicio de repetidor de PageKite. es uno de de estos servicios. Un servicio de repetidor de PageKite te permitirá crear cometas (kites). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas.
Usar PageKiteCréate una cuenta en un servicio de repetidor de PageKite. Añade una cometa a tu cuenta. Anota el nombre y el sectreo de tu cometa. En Plinth, vé a la solapa "Configurar PageKite" de la página Visibilidad Publica (PageKite). Marca la caja "Habilitar PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades". En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional). HTTP se necesita para obtener el certificado Let's Encrypt. Puedes deshabilitarlo (HTTPS) más tarde. En la página Certificados (Let's Encrypt) puedes obtener un certificado Let's Encrypt para el nombre de tu cometa. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/PageKite12019-06-20 15:13:14fioddorSe crea la versión española.
Visibilidad Publica (PageKite)
¿Qué es PageKite?PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar PageKite require ana cuenta en un servicio de repetidor de PageKite. es uno de de estos servicios. Un servicio de repetidor de PageKite te permitirá crear cometas (kites). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas.
Usar PageKiteCréate una cuenta en un servicio de repetidor de PageKite. Añade una cometa a tu cuenta. Anota el nombre y el sectreo de tu cometa. En Plinth, vé a la solapa "Configurar PageKite" de la página Visibilidad Publica (PageKite). Marca la caja "Habilitar PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades". En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional). HTTP se necesita para obtener el certificado Let's Encrypt. Puedes deshabilitarlo (HTTPS) más tarde. En la página Certificados (Let's Encrypt) puedes obtener un certificado Let's Encrypt para el nombre de tu cometa. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Power.raw.xml b/doc/manual/es/Power.raw.xml index 298863a1b..d3fef6627 100644 --- a/doc/manual/es/Power.raw.xml +++ b/doc/manual/es/Power.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Power12019-06-18 15:25:34fioddorSe crea la versión española.
ApagadoPower proporciona un modo fácil de reiniciar o apagar tu FreedomBox. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. Se puede llegar también a las opciones "Reiniciar" y "Apagar" desde el menú desplegable del usuario en la esquina superior derecha. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Power12019-06-18 15:25:34fioddorSe crea la versión española.
ApagadoPower proporciona un modo fácil de reiniciar o apagar tu FreedomBox. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. Se puede llegar también a las opciones "Reiniciar" y "Apagar" desde el menú desplegable del usuario en la esquina superior derecha. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Privoxy.raw.xml b/doc/manual/es/Privoxy.raw.xml index bb2c65d4e..609f630e7 100644 --- a/doc/manual/es/Privoxy.raw.xml +++ b/doc/manual/es/Privoxy.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Privoxy22019-09-16 11:36:07fioddor12019-09-16 11:33:00fioddorSe crea la versión española.
Proxy Web (Privoxy)Un proxy web actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados. Privoxy es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: Preguntas frecuentes acerca de Privoxy).
VídeoMira el vídeo acerca de como configurar y usar Privoxy en FreedomBox.
ConfigurarInstala Proxy Web (Privoxy) desde Plinth Privoxy Installation Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos. Privoxy Browser Settings Vé a la página o . Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo. Si usas un portátil que tenga a veces que conectarse con FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión proxy switch que te permite activar y desactivar el proxy más fácilmente.
Usuarios AvanzadosLa instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad. Con Privoxy activado puedes ver su documentación y los detalles de su configuración en http://config.privoxy.org/ o en http://p.p. Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de habilitar-acciones-de-edición en /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados. Ahora encontrarás un botón EDITAR en la pantalla de configuración de http://config.privoxy.org/. La Guía rápida es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Privoxy22019-09-16 11:36:07fioddor12019-09-16 11:33:00fioddorSe crea la versión española.
Proxy Web (Privoxy)Un proxy web actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados. Privoxy es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: Preguntas frecuentes acerca de Privoxy).
VídeoMira el vídeo acerca de como configurar y usar Privoxy en FreedomBox.
ConfigurarInstala Proxy Web (Privoxy) desde Plinth Privoxy Installation Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos. Privoxy Browser Settings Vé a la página o . Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo. Si usas un portátil que tenga a veces que conectarse con FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión proxy switch que te permite activar y desactivar el proxy más fácilmente.
Usuarios AvanzadosLa instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad. Con Privoxy activado puedes ver su documentación y los detalles de su configuración en http://config.privoxy.org/ o en http://p.p. Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de habilitar-acciones-de-edición en /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados. Ahora encontrarás un botón EDITAR en la pantalla de configuración de http://config.privoxy.org/. La Guía rápida es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Quassel.raw.xml b/doc/manual/es/Quassel.raw.xml index 72d22f6f7..b69e21010 100644 --- a/doc/manual/es/Quassel.raw.xml +++ b/doc/manual/es/Quassel.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Quassel22019-09-12 12:18:51fioddorSe crea la versión española.12019-09-12 12:11:29fioddorSe crea la versión española.
Cliente IRC (Quassel)Quassel es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles.
¿Para qué ejecutar Quassel?Muchos debates acerca de FreedomBox tienen lugar en el canal IRC irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Quassel recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu cliente para conectar al núcleo de Quassel y leer y/o responder cuando tengas tiempo y disponibilidad.
¿Cómo activar Quassel?En Plinth selecciona Aplicaciones ve a Cliente IRC (Quassel) e instala la aplicación y asegúrate de que está habilitada Quassel Installation tu núcleo de Quassel se está ejecutando
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel: TCP 4242 Ejemplo de configuración en el router: Quassel_PortForwarding.png
ClientesHay disponibles clientes para escritorio y dispositivos móviles para conectar a Quassel.
EscritorioEn un sistema Debian puedes, p. ej. usar quassel-client. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también. Abre el Cliente Quassel. Te guiará paso a paso para Conectar con el Núcleo. Connect to Core Haz clic en el botón Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Add Core Account Rellena cualquier cosa en el campo Nombre de Cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Hostname. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordarme. Tras pulsar OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el Núcleo. Connect to Core Selecciona la cuenta del núcleo recién creada y dale a OK para conectar con él. Si es la primera vez que te conectas a este núcleo verás un aviso de Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Untrusted Security Certificate Selecciona Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Untrusted Security Certificate Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos Asistente de Configuración del Núcleo. Selecciona Siguiente. Core Configuration Wizard En la página Crear Usuario Administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Create Admin User Page En la página Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Select Storage Backend La configuración del núcleo está completa y verás un asistente Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. Welcome Wizard A continuación en la página de Configuración de Identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. Setup Identity A continuación en la página de Configuración de Conexión de Red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). Setup Network Connection Selecciona un servidor de la lista y dale a Editar. En el diálogo Información del Servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar SSL. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. Server Info Server Info SSL Ya de vuelta en el diálogo Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. Setup Network Connection Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. Quassel Main Window Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos.
AndroidPara dispositivos Android puedes usar p.ej. Quasseldroid obtenido desde F-Droid introduce el núcleo, usuario, etc. Quasseldroid.png Por cierto el verbo alemán quasseln significa hablar mucho, rajar. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Quassel22019-09-12 12:18:51fioddorSe crea la versión española.12019-09-12 12:11:29fioddorSe crea la versión española.
Cliente IRC (Quassel)Quassel es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles.
¿Para qué ejecutar Quassel?Muchos debates acerca de FreedomBox tienen lugar en el canal IRC irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Quassel recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu cliente para conectar al núcleo de Quassel y leer y/o responder cuando tengas tiempo y disponibilidad.
¿Cómo activar Quassel?En Plinth selecciona Aplicaciones ve a Cliente IRC (Quassel) e instala la aplicación y asegúrate de que está habilitada Quassel Installation tu núcleo de Quassel se está ejecutando
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel: TCP 4242 Ejemplo de configuración en el router: Quassel_PortForwarding.png
ClientesHay disponibles clientes para escritorio y dispositivos móviles para conectar a Quassel.
EscritorioEn un sistema Debian puedes, p. ej. usar quassel-client. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también. Abre el Cliente Quassel. Te guiará paso a paso para Conectar con el Núcleo. Connect to Core Haz clic en el botón Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Add Core Account Rellena cualquier cosa en el campo Nombre de Cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Hostname. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordarme. Tras pulsar OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el Núcleo. Connect to Core Selecciona la cuenta del núcleo recién creada y dale a OK para conectar con él. Si es la primera vez que te conectas a este núcleo verás un aviso de Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Untrusted Security Certificate Selecciona Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Untrusted Security Certificate Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos Asistente de Configuración del Núcleo. Selecciona Siguiente. Core Configuration Wizard En la página Crear Usuario Administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Create Admin User Page En la página Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Select Storage Backend La configuración del núcleo está completa y verás un asistente Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. Welcome Wizard A continuación en la página de Configuración de Identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. Setup Identity A continuación en la página de Configuración de Conexión de Red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). Setup Network Connection Selecciona un servidor de la lista y dale a Editar. En el diálogo Información del Servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar SSL. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. Server Info Server Info SSL Ya de vuelta en el diálogo Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. Setup Network Connection Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. Quassel Main Window Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos.
AndroidPara dispositivos Android puedes usar p.ej. Quasseldroid obtenido desde F-Droid introduce el núcleo, usuario, etc. Quasseldroid.png Por cierto el verbo alemán quasseln significa hablar mucho, rajar. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Radicale.raw.xml b/doc/manual/es/Radicale.raw.xml index 4651d9883..2646a62ca 100644 --- a/doc/manual/es/Radicale.raw.xml +++ b/doc/manual/es/Radicale.raw.xml @@ -26,4 +26,4 @@ chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ apt remove -y python-radicale if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi -(Cuando FreedomBox 19.1 está disponble ve al interfaz web de FreedomBox y vuelve a configurar tu preferencia de compartición de calendario si no se muestra bien porque se habrá perdido durante la operación.)]]>Notas: python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un hack alternativo para emplear la funcionalidad --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. Los ficheros que acaban en .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. Nota: Durante la migración tus datos permanecen a salvo en el directorio /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. El comando tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios.
Resolución de Problemas1. Si estás usando FreedomBox Pioneer Edition o instalando FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +(Cuando FreedomBox 19.1 está disponble ve al interfaz web de FreedomBox y vuelve a configurar tu preferencia de compartición de calendario si no se muestra bien porque se habrá perdido durante la operación.)]]>Notas: python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un hack alternativo para emplear la funcionalidad --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. Los ficheros que acaban en .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. Nota: Durante la migración tus datos permanecen a salvo en el directorio /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. El comando tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios.
Resolución de Problemas1. Si estás usando FreedomBox Pioneer Edition o instalando FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Repro.raw.xml b/doc/manual/es/Repro.raw.xml index bd999e129..65d4866db 100644 --- a/doc/manual/es/Repro.raw.xml +++ b/doc/manual/es/Repro.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Repro12019-09-14 08:59:56fioddorSe crea la versión española (traducción incompleta).
Servidor SIP (Repro)App eliminada Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox. Repro es un servidor de SIP, un estándar para llamadas de voz sobre IP (VoIP). Se requiere un cliente SIP de escritorio o móvil para usar Repro.
Cómo configurar el servidor SIPConfigura el dominio en la página /repro/domains.html de la FreedomBox. Repro Domains Añade usuarios en /repro/addUser.html. Repro Users Deshabilita y vuelve a habilitar la aplicaión Repro en Plinth.
Redirección de PuertosSi tu FreedomBox estrá detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Repro12019-09-14 08:59:56fioddorSe crea la versión española (traducción incompleta).
Servidor SIP (Repro)App eliminada Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox. Repro es un servidor de SIP, un estándar para llamadas de voz sobre IP (VoIP). Se requiere un cliente SIP de escritorio o móvil para usar Repro.
Cómo configurar el servidor SIPConfigura el dominio en la página /repro/domains.html de la FreedomBox. Repro Domains Añade usuarios en /repro/addUser.html. Repro Users Deshabilita y vuelve a habilitar la aplicaión Repro en Plinth.
Redirección de PuertosSi tu FreedomBox estrá detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Roundcube.raw.xml b/doc/manual/es/Roundcube.raw.xml index e289cea95..a6c6b1b62 100644 --- a/doc/manual/es/Roundcube.raw.xml +++ b/doc/manual/es/Roundcube.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Roundcube52019-09-11 09:40:48fioddorCorrección menor42019-09-11 09:40:18fioddorCorrección menor32019-09-11 09:39:03fioddorCorrección menor22019-09-11 09:37:31fioddor12019-09-11 09:35:26fioddorSe crea la versión española.
Cliente de Correo Electrónico (Email) (Roundcube)
¿Qué es Roundcube?Roundcube es un cliente de correo electrónico (email) para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = Internet Message Access Protocol) para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica.
Usar RoundcubeTras instalar Roundcube se puede acceder a él en https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como usuario_de_ejemplo@servicio_de_ejemplo.org, no solo el usuario usuario_de_ejemplo. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo Servidor. Puedes probar a poner aquí tu nombre de dominio como servicio_de_ejemplo.org si la dirección es usuario_de_ejemplo@servicio_de_ejemplo.org y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, imaps://imap.servicio_de_ejemplo.org. Logging into your IMAP server
Usar Gmail con RoundcubeSi quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las preferencias de la Cuenta Google y habilita Apps Menos seguras. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como Usuario y tu contraseña. En el campo servidor pon imaps://imap.gmail.com. Logging into Gmail Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Roundcube52019-09-11 09:40:48fioddorCorrección menor42019-09-11 09:40:18fioddorCorrección menor32019-09-11 09:39:03fioddorCorrección menor22019-09-11 09:37:31fioddor12019-09-11 09:35:26fioddorSe crea la versión española.
Cliente de Correo Electrónico (Email) (Roundcube)
¿Qué es Roundcube?Roundcube es un cliente de correo electrónico (email) para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = Internet Message Access Protocol) para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica.
Usar RoundcubeTras instalar Roundcube se puede acceder a él en https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como usuario_de_ejemplo@servicio_de_ejemplo.org, no solo el usuario usuario_de_ejemplo. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo Servidor. Puedes probar a poner aquí tu nombre de dominio como servicio_de_ejemplo.org si la dirección es usuario_de_ejemplo@servicio_de_ejemplo.org y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, imaps://imap.servicio_de_ejemplo.org. Logging into your IMAP server
Usar Gmail con RoundcubeSi quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las preferencias de la Cuenta Google y habilita Apps Menos seguras. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como Usuario y tu contraseña. En el campo servidor pon imaps://imap.gmail.com. Logging into Gmail Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Searx.raw.xml b/doc/manual/es/Searx.raw.xml index b672c2458..90f9262f3 100644 --- a/doc/manual/es/Searx.raw.xml +++ b/doc/manual/es/Searx.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Searx32019-09-16 12:06:12fioddorCorrección menor22019-09-16 12:04:34fioddorSe crea la versión española.12019-09-16 11:39:36fioddor
Búsqueda Web (Searx)
Acerca de SearxSearx es un metabuscador. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado. Lee más acerca de Searx en su sitio web oficial. Disponible desde: versión 0.24.0
Captura de pantallaSearx Screenshot
VídeoSearx installation and first steps (14 MB)
¿Por qué usar Searx?
Personalización y Burbujas por FiltradoLos buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en burbujas por filtrado y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios. Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores. Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores.
Filtrado de publicidadSearx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones.
PrivacidadSearx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los buscadores, así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador. Nota: Searx usado desde la barra (omnibar) del navegador Chrome hará peticiones GET en vez de POST.
Searx en FreedomBoxEn FreedomBox Searx usa las credenciales únicas de Single Sign On. Esto implica que tienes que haber ingresado en tu FreedomBox con el navegador en el que estás usando Searx. Se puede acceder fácilmente a SearX a través de Tor. Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la Ayuda de Firefox acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto. Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Searx32019-09-16 12:06:12fioddorCorrección menor22019-09-16 12:04:34fioddorSe crea la versión española.12019-09-16 11:39:36fioddor
Búsqueda Web (Searx)
Acerca de SearxSearx es un metabuscador. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado. Lee más acerca de Searx en su sitio web oficial. Disponible desde: versión 0.24.0
Captura de pantallaSearx Screenshot
VídeoSearx installation and first steps (14 MB)
¿Por qué usar Searx?
Personalización y Burbujas por FiltradoLos buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en burbujas por filtrado y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios. Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores. Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores.
Filtrado de publicidadSearx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones.
PrivacidadSearx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los buscadores, así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador. Nota: Searx usado desde la barra (omnibar) del navegador Chrome hará peticiones GET en vez de POST.
Searx en FreedomBoxEn FreedomBox Searx usa las credenciales únicas de Single Sign On. Esto implica que tienes que haber ingresado en tu FreedomBox con el navegador en el que estás usando Searx. Se puede acceder fácilmente a SearX a través de Tor. Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la Ayuda de Firefox acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto. Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/SecureShell.raw.xml b/doc/manual/es/SecureShell.raw.xml index 70bacd1f3..4802c18de 100644 --- a/doc/manual/es/SecureShell.raw.xml +++ b/doc/manual/es/SecureShell.raw.xml @@ -5,4 +5,4 @@
es/FreedomBox/Manual/SecureShell42019-11-14 18:13:56fioddorSe alinea con la versión 13 en inglés del 11 de noviembre de 201932019-08-20 08:32:32fioddorSe incorpora la traducción de una sección nueva.22019-08-20 07:08:46fioddorSe incorpora la traducción de una sección nueva.12019-08-20 07:02:24fioddorSe crea la versión española.
Shell Segura
¿Qué es Shell Segura?FreedomBox ejecuta el servidor openssh-server por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está connectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo.
Configurando una Cuenta de Usuario
Primer ingreso a Plinth: Cuenta de AdminAl crear una cuenta en Plinth por primera vez, el usuario tendrá automaticamente privilegios de administrador. Los usuarios Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo.
Cuenta de Usuario por DefectoNota: Si puedes acceder a Plinth es que no necesitas hacer esto. Puedes usar la cuenta de usuario de Plinth para conectar por SSH. Las imagenes precompiladas FreedomBox tienen una cuenta de usuario llamada fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. Hay un script incluído en el programa freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: Descomprime la imagen. Obtén una copia de freedom-maker en . Ejecuta sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. Copia el archivo de la imagen a la tarjeta SD e inicia el dispositivo. El usuario "fbx" también tiene privilegios de superusuario mediante sudo.
Ingresando
LocalPara ingresar mediante SSH a tu FreedomBox: Reemplaza fbx por el usuario con el que quieres ingresar. Hay que reemplazar freedombox por el hostname o dirección IP de tu dispositivo FreedomBox como se indica en el proceso de Inicio rápido. fbx es el usuario de FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con Plinth que pertenezca al grupo admin podrá ingresar. La cuenta root no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso. fbx y los otros usuarios del grupo admin podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso. Si fallas repetidamente intentando ingresar se te bloqueará el acceso por algún tiempo. Esto se debe al paquete libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl.
SSH via TorSi tienes habilitados en Plinth los servicios Tor Onion puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd. Edita ~/.ssh/config para habilitar conexiones sobre Tor. Añade lo siguiente: Replace USUARIO por un usuario del grupo admin (ver arriba). En algunos casos podrías necesitar reemplazar 9050 por 9150. Ahora, para conectar a la FreedomBox abre un terminal y teclea: Reemplaza USUARIO por un usuario del grupo admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox.
Escalar a SuperusuarioSi después de ingresar quieres volverte superusuario para realizar actividades administrativas: Habitúate a ingresar como root solo cuando sea estrictamente necesario. Si no ingresas como root no puedes romperlo todo accidentalmente.
Cambiar ContraseñasPara cambiar la contraseña de un usuario administrado en Plinth usa la página Cambiar contraseña. El usuario por debecto fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. Para cambiar la contraseña en el terminal ingresa a tu FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando: Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file + ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p]]>Replace USUARIO por un usuario del grupo admin (ver arriba). En algunos casos podrías necesitar reemplazar 9050 por 9150. Ahora, para conectar a la FreedomBox abre un terminal y teclea: Reemplaza USUARIO por un usuario del grupo admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox.
Escalar a SuperusuarioSi después de ingresar quieres volverte superusuario para realizar actividades administrativas: Habitúate a ingresar como root solo cuando sea estrictamente necesario. Si no ingresas como root no puedes romperlo todo accidentalmente.
Cambiar ContraseñasPara cambiar la contraseña de un usuario administrado en Plinth usa la página Cambiar contraseña. El usuario por debecto fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. Para cambiar la contraseña en el terminal ingresa a tu FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando: Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Security.raw.xml b/doc/manual/es/Security.raw.xml index 68ca0033a..076d5c98c 100644 --- a/doc/manual/es/Security.raw.xml +++ b/doc/manual/es/Security.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Security22019-10-14 07:25:52fioddorSe actualiza a la versión inglesa 03 del 12 de octubre de 2019.12019-06-19 12:14:30fioddorSe crea la versión española.
SeguridadCuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización. La sección Usuarios explica cómo definir grupos de usuarios. Cuando la opción Restringir ingresos por consola está habilitada, sólo los usuarios del grupo admin podrán ingresar via consola, shell segura (SSH) o interfaz gráfico. Al desactivar esta funcionalidad cualquier usuario con cuenta en FreedomBox podrá ingresar y quizá tener acceso a ciertos servicios sin más autorización. Esta opción solo debería desactivarse si se confía plenamente en todos los usuarios del sistema. Si quieres usar tu máquina FreedomBox también como escritorio y admitir que usuarios no-admin ingresen mediante interfáz gráfica esta opción debe estar desactivada. Puedes determinar la lista de usuarios admin en la sección Users. Security.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Security22019-10-14 07:25:52fioddorSe actualiza a la versión inglesa 03 del 12 de octubre de 2019.12019-06-19 12:14:30fioddorSe crea la versión española.
SeguridadCuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización. La sección Usuarios explica cómo definir grupos de usuarios. Cuando la opción Restringir ingresos por consola está habilitada, sólo los usuarios del grupo admin podrán ingresar via consola, shell segura (SSH) o interfaz gráfico. Al desactivar esta funcionalidad cualquier usuario con cuenta en FreedomBox podrá ingresar y quizá tener acceso a ciertos servicios sin más autorización. Esta opción solo debería desactivarse si se confía plenamente en todos los usuarios del sistema. Si quieres usar tu máquina FreedomBox también como escritorio y admitir que usuarios no-admin ingresen mediante interfáz gráfica esta opción debe estar desactivada. Puedes determinar la lista de usuarios admin en la sección Users. Security.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/ServiceDiscovery.raw.xml b/doc/manual/es/ServiceDiscovery.raw.xml index ce58f5878..0bc879a8f 100644 --- a/doc/manual/es/ServiceDiscovery.raw.xml +++ b/doc/manual/es/ServiceDiscovery.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/ServiceDiscovery12019-06-19 12:36:54fioddorSe crea la versión española.
Detección de ServiciosLa Detección de Servicios permite a otros dispositivos de la red detectar a tu FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu FreedomBox en <hostname>.local (por ejemplo: freedombox.local). También permite a FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local. La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/ServiceDiscovery12019-06-19 12:36:54fioddorSe crea la versión española.
Detección de ServiciosLa Detección de Servicios permite a otros dispositivos de la red detectar a tu FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu FreedomBox en <hostname>.local (por ejemplo: freedombox.local). También permite a FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local. La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Shadowsocks.raw.xml b/doc/manual/es/Shadowsocks.raw.xml index 372a83d90..05534bee6 100644 --- a/doc/manual/es/Shadowsocks.raw.xml +++ b/doc/manual/es/Shadowsocks.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Shadowsocks22019-09-14 09:52:23fioddorCorrección menor12019-09-14 09:45:29fioddorSe crea la versión española.
Proxy SOCKS5 (Shadowsocks)
¿Qué es Shadowsocks?Shadowsocks es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks. Nota: Shadowsocks está disponible en FreedomBox a partir de la versión 0.18 de Plinth.
Usar el cliente ShadowsocksLa implementación actual de Shadowsocks en FreedomBox solo soporta configurar FreedomBox como cliente Shadowsocks. Este caso de uso sería así: El client de Shadowsocks (FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas. El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos. FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks. En el futuro será posible configurar FreedomBox como servidor Shadowsocks.
Configurar tu FreedomBox para el cliente ShadowsocksPara habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo. Servidor: el servidor Shadowsocks no es la IP o la URL de FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita. Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como http://<tu_freedombox>:1080/. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Shadowsocks22019-09-14 09:52:23fioddorCorrección menor12019-09-14 09:45:29fioddorSe crea la versión española.
Proxy SOCKS5 (Shadowsocks)
¿Qué es Shadowsocks?Shadowsocks es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks. Nota: Shadowsocks está disponible en FreedomBox a partir de la versión 0.18 de Plinth.
Usar el cliente ShadowsocksLa implementación actual de Shadowsocks en FreedomBox solo soporta configurar FreedomBox como cliente Shadowsocks. Este caso de uso sería así: El client de Shadowsocks (FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas. El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos. FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks. En el futuro será posible configurar FreedomBox como servidor Shadowsocks.
Configurar tu FreedomBox para el cliente ShadowsocksPara habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo. Servidor: el servidor Shadowsocks no es la IP o la URL de FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita. Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como http://<tu_freedombox>:1080/. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Snapshots.raw.xml b/doc/manual/es/Snapshots.raw.xml index 5f59d13fb..fa6b2be5f 100644 --- a/doc/manual/es/Snapshots.raw.xml +++ b/doc/manual/es/Snapshots.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Snapshots12019-06-20 14:29:35fioddorSe crea la versión española.
InstantáneasLas Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. Nota: Esta funcionalidad requier un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs. Instantáneas Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Snapshots12019-06-20 14:29:35fioddorSe crea la versión española.
InstantáneasLas Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. Nota: Esta funcionalidad requier un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs. Instantáneas Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Storage.raw.xml b/doc/manual/es/Storage.raw.xml index 0437c22ee..dad93c502 100644 --- a/doc/manual/es/Storage.raw.xml +++ b/doc/manual/es/Storage.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Storage12019-06-20 14:42:39fioddorSe crea la versión española.
AlmacenamientoAlmacenamiento te permite ver los dispositivos de almacenamiento conectados a tu FreedomBox y el uso de su espacio. FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección Dispositivos extraíbles junto con una opción para expulsarlos. Si queda espacio libre detrás de la partición de root, se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la FreedomBox se produce automáticamente una expansión total de la partición de root. Storage.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Storage12019-06-20 14:42:39fioddorSe crea la versión española.
AlmacenamientoAlmacenamiento te permite ver los dispositivos de almacenamiento conectados a tu FreedomBox y el uso de su espacio. FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección Dispositivos extraíbles junto con una opción para expulsarlos. Si queda espacio libre detrás de la partición de root, se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la FreedomBox se produce automáticamente una expansión total de la partición de root. Storage.png Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Syncthing.raw.xml b/doc/manual/es/Syncthing.raw.xml index 73d0a9a0d..3b8a80db0 100644 --- a/doc/manual/es/Syncthing.raw.xml +++ b/doc/manual/es/Syncthing.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Syncthing52019-11-14 18:11:07fioddorSe alinea con la versión 18 en inglés del 11 de noviembre de 201942019-11-04 11:25:50fioddorSe alinea con la versión 14 del 01 de noviembre de 201932019-10-28 09:30:15fioddorSe alinea con la versión 14 del 27 de octubre de 201922019-09-11 15:32:18fioddorSe crea la versión española.12019-09-11 15:25:11fioddorSe crea la versión española.
Sincronización de Archivos (Syncthing)Con Syncthing instalado en tu FreedomBox puedes sincronizar contenido desde otros dispositivos a tu FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu FreedomBox. Disponible desde versión: 0.14. Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con FreedomBox el portátil podrá obtenerlas desde la FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten. Tras instalarlo sigue estas instrucciones del proyecto Syncthing: Arrancando. Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado. Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu FreedomBox, usa la ruta /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. Syncthing web interface Syncthing tiene apps Android disponibles en F-Droid y Google Play. También hay disponibles aplicaciones de escritorio multiplataforma. Para más información acerca de Syncthing visita su sitio web oficial y su documentación.
Sincronizar via TorSyncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio Tor Onion. Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno all_proxy: Para más información mira la documentación de Syncthing acerca de el uso de proxies.
Evitar repetidores de SyncthingSyncthing emplea por defecto conexiones dinámicas para conectar con otros pares. Esto significa que si estás sincronizando a través de Internet, los datos quizá tengan que atravesar repetidores de Syncthing públicos para alcanzar tus dispositivos. Esto desaprovecha que tu FreedomBox tenga una dirección IP pública. Al añadir tu FreedomBox como dispositivo en otros clientes de Syncthing establece tu dirección como "tcp://<mi.dominio.freedombox>" en vez de "dinámica". Esto permite a tus pares Syncthing conectarse diréctamente a tu FreedomBox eludiendo la necesidad de repetidores. También permite sincronización rápida bajo demanda si no quieres mantener a Syncthing ejecuándose todo el tiempo en tus dispositivos móviles. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Syncthing52019-11-14 18:11:07fioddorSe alinea con la versión 18 en inglés del 11 de noviembre de 201942019-11-04 11:25:50fioddorSe alinea con la versión 14 del 01 de noviembre de 201932019-10-28 09:30:15fioddorSe alinea con la versión 14 del 27 de octubre de 201922019-09-11 15:32:18fioddorSe crea la versión española.12019-09-11 15:25:11fioddorSe crea la versión española.
Sincronización de Archivos (Syncthing)Con Syncthing instalado en tu FreedomBox puedes sincronizar contenido desde otros dispositivos a tu FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu FreedomBox. Disponible desde versión: 0.14. Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con FreedomBox el portátil podrá obtenerlas desde la FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten. Tras instalarlo sigue estas instrucciones del proyecto Syncthing: Arrancando. Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado. Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu FreedomBox, usa la ruta /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. Syncthing web interface Syncthing tiene apps Android disponibles en F-Droid y Google Play. También hay disponibles aplicaciones de escritorio multiplataforma. Para más información acerca de Syncthing visita su sitio web oficial y su documentación.
Sincronizar via TorSyncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio Tor Onion. Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno all_proxy: Para más información mira la documentación de Syncthing acerca de el uso de proxies.
Evitar repetidores de SyncthingSyncthing emplea por defecto conexiones dinámicas para conectar con otros pares. Esto significa que si estás sincronizando a través de Internet, los datos quizá tengan que atravesar repetidores de Syncthing públicos para alcanzar tus dispositivos. Esto desaprovecha que tu FreedomBox tenga una dirección IP pública. Al añadir tu FreedomBox como dispositivo en otros clientes de Syncthing establece tu dirección como "tcp://<mi.dominio.freedombox>" en vez de "dinámica". Esto permite a tus pares Syncthing conectarse diréctamente a tu FreedomBox eludiendo la necesidad de repetidores. También permite sincronización rápida bajo demanda si no quieres mantener a Syncthing ejecuándose todo el tiempo en tus dispositivos móviles. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/TinyTinyRSS.raw.xml b/doc/manual/es/TinyTinyRSS.raw.xml index 21f8fdff2..c171800ca 100644 --- a/doc/manual/es/TinyTinyRSS.raw.xml +++ b/doc/manual/es/TinyTinyRSS.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/TinyTinyRSS12019-09-13 17:05:05fioddorSe crea la versión española.
Lector de Feeds de Noticias (Tiny Tiny RSS)Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios feeds, estado y preferencias.
Usar el interfaz webCuando esté habilitado Tiny Tiny RSS estará disponible en la ruta /tt-rss del servidor web. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Tiny Tiny RSS
Añadir un nuevo feed1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed. Selecting feeds 2. Selecciona "Subscribirse al feed.." en el desplegable Acciones. Subscribe to feed 3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón Subscribirse. Subscription dialog box Dale un minuto a la aplicación para obtener los feeds. En algunos sitios web el botón de feeds RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los feeds RSS que haya en la página. Puedes probarlo ahora con la página principal de WikiNews Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el feed Atom de WikiNews a nuestra lista de feeds. WikiNews feed added Si no quieres conservar este feed haz clic con el botón derecho del ratón en el feed de la imagen anterior, selecciona Editar feed y dale a Desubscribir en el diálogo que aparece. Unsubscribe from a feed
Importar tus feeds desde otro lectorEncuentra en tu lector de feeds previo una opción para Exportar tus feeds a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de feeds exportados se llama Subscriptions.opml Haz click en la esquina superior izquierda el menú Acciones y selecciona Preferencias. Se te llevará a otra página. En la cabecera superior selecciona la 2ª solapa llamada Feeds. Tiene varias secciones y la 2ª se llama OPML. Selecciónala. OPML feeds page Para importar tu fichero Subscriptions.opml a TT-RSS, Haz clic en Examinar... y selecciona el fichero en tu sistema de archivos. Haz clic en Importar mi OPML Tras importar se te llevará a la sección Feeds que está en la página encima de la de OPML. Puedes ver que los feeds del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal.
Usar la app móvilLa app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader no funciona. Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta. Para configurarla, primero instálala y entonces en la página de configuración pon como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/TinyTinyRSS12019-09-13 17:05:05fioddorSe crea la versión española.
Lector de Feeds de Noticias (Tiny Tiny RSS)Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios feeds, estado y preferencias.
Usar el interfaz webCuando esté habilitado Tiny Tiny RSS estará disponible en la ruta /tt-rss del servidor web. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Tiny Tiny RSS
Añadir un nuevo feed1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed. Selecting feeds 2. Selecciona "Subscribirse al feed.." en el desplegable Acciones. Subscribe to feed 3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón Subscribirse. Subscription dialog box Dale un minuto a la aplicación para obtener los feeds. En algunos sitios web el botón de feeds RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los feeds RSS que haya en la página. Puedes probarlo ahora con la página principal de WikiNews Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el feed Atom de WikiNews a nuestra lista de feeds. WikiNews feed added Si no quieres conservar este feed haz clic con el botón derecho del ratón en el feed de la imagen anterior, selecciona Editar feed y dale a Desubscribir en el diálogo que aparece. Unsubscribe from a feed
Importar tus feeds desde otro lectorEncuentra en tu lector de feeds previo una opción para Exportar tus feeds a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de feeds exportados se llama Subscriptions.opml Haz click en la esquina superior izquierda el menú Acciones y selecciona Preferencias. Se te llevará a otra página. En la cabecera superior selecciona la 2ª solapa llamada Feeds. Tiene varias secciones y la 2ª se llama OPML. Selecciónala. OPML feeds page Para importar tu fichero Subscriptions.opml a TT-RSS, Haz clic en Examinar... y selecciona el fichero en tu sistema de archivos. Haz clic en Importar mi OPML Tras importar se te llevará a la sección Feeds que está en la página encima de la de OPML. Puedes ver que los feeds del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal.
Usar la app móvilLa app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader no funciona. Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta. Para configurarla, primero instálala y entonces en la página de configuración pon como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Tor.raw.xml b/doc/manual/es/Tor.raw.xml index 94509cde0..05d3b81eb 100644 --- a/doc/manual/es/Tor.raw.xml +++ b/doc/manual/es/Tor.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Tor102019-11-30 18:08:09fioddorSe alinea con la versión 23 en inglés del 28 de noviembre de 201992019-11-14 17:59:44fioddorSe alinea con la versión 22 en inglés del 11 de noviembre de 201982019-10-28 09:44:53fioddorSe alinea con la versión 21 del 27 de octubre de 201972019-10-21 13:54:58fioddorCorrección menor62019-09-03 15:18:40fioddorMejora menor52019-09-03 15:17:22fioddortraducción de la sección TOR finalizada.42019-09-03 15:11:56fioddorSe incorpora la traducción de una sección nueva.32019-09-03 15:04:38fioddorSe incorpora la traducción de una sección nueva.22019-09-03 14:49:23fioddorSe incorpora la traducción de una sección nueva.12019-09-03 14:32:43fioddorSe crea la versión española (traducción incompleta).
Red para el anonimato (Tor)
¿Qué es Tor?Tor es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva.
Usar Tor para navegación anónimaTor Browser es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde y seguir sus instrucciones para instalarlo y ejecutarlo.
Usar Servicio Tor Onion para acceder a tu FreedomBoxEl Servicio Tor Onion proporciona una manera de acceder a tu FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router). Para habilitar el Servicio Tor Onion primero navega a la página Red para el anónimato (Tor). (Si no la ves haz clic en el logo de FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página Red para el anónimato (Tor), bajo Configuración, habilita la caja Habilitar los Servicios Tor Onion y pulsa el botón de Actualizar configuración. Tor se reconfigurará y se reiniciará. Transcurrido un rato la página se refrescará bajo Estado verás la tabla que lista la dirección .onion del servicio. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de Tor Browser. Deberías poder acceder a tu FreedomBox. (Quizá veas un aviso de certificado porque FreedomBox tiene un certificado autofirmado.) Tor Browser - Plinth Onion Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Tor Onion configurado en la FreedomBox.
Apps accesibles via TorLas siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta. Calendario y Libreta de direcciones (Radicale) Sincronización de ficheros (Syncthing) Búsqueda Web (Searx) Wiki (MediaWiki) Wiki y Blog (Ikiwiki)
Ejecutar un nodo TorCuando se instala Tor se configura por defecto para ejecutarse como puente a la red (bridge relay). Esta opción se puede deshabilitar en la página de configuración de Tor de Plinth. En la parte inferior de página de Tor de Plinth hay una lista de puertos que usa el puente a la red Tor. Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet. Los requisitos para ejecutar un puente a la red se listan en la Tor Relay Guide. En resúmen, se recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más. requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada. recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM.
Usar el puerto Tor SOCKS (avanzado)FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el Host SOCKS a la dirección IP interna de la conexión y pon el Puerto SOCKS a 9050.
Exjemplo con FirefoxTu navegador web se puede configurar para emplear la red Tor para toda tu actividad de navegación. Esto permite eludir la censura y oculta tu dirección IP a los sitios web durante la navegación normal. Para anonimato se recomienda usar el Navegador Tor. Configura tu dirección IP local de FreedomBox y el puerto 9050 como un proxy SOCKS en Firefox. Hay extensiones para facilitar la activación y desactivación del proxy. Configuring Firefox with Tor SOCKS proxy Con en proxy SOCKS configurado puedes acceder cualquier URL de tipo onion diréctamente desde Firefox. FreedomBox tiene una dirección onion v3 propia a la que puedes conectarte por la red Tor (guárdala en tus favoritos para usarla en situaciones de emergencia).
Eludiendo la censura de TorSi tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor). 1. Obtén la configuración de los puentes de Tor BridgeDB Tor BridgeDB 2. Añade las líneas a la configuración de Tor de tu FreedomBox como se muestra. Tor Configuration Page Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Tor102019-11-30 18:08:09fioddorSe alinea con la versión 23 en inglés del 28 de noviembre de 201992019-11-14 17:59:44fioddorSe alinea con la versión 22 en inglés del 11 de noviembre de 201982019-10-28 09:44:53fioddorSe alinea con la versión 21 del 27 de octubre de 201972019-10-21 13:54:58fioddorCorrección menor62019-09-03 15:18:40fioddorMejora menor52019-09-03 15:17:22fioddortraducción de la sección TOR finalizada.42019-09-03 15:11:56fioddorSe incorpora la traducción de una sección nueva.32019-09-03 15:04:38fioddorSe incorpora la traducción de una sección nueva.22019-09-03 14:49:23fioddorSe incorpora la traducción de una sección nueva.12019-09-03 14:32:43fioddorSe crea la versión española (traducción incompleta).
Red para el anonimato (Tor)
¿Qué es Tor?Tor es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva.
Usar Tor para navegación anónimaTor Browser es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde y seguir sus instrucciones para instalarlo y ejecutarlo.
Usar Servicio Tor Onion para acceder a tu FreedomBoxEl Servicio Tor Onion proporciona una manera de acceder a tu FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router). Para habilitar el Servicio Tor Onion primero navega a la página Red para el anónimato (Tor). (Si no la ves haz clic en el logo de FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página Red para el anónimato (Tor), bajo Configuración, habilita la caja Habilitar los Servicios Tor Onion y pulsa el botón de Actualizar configuración. Tor se reconfigurará y se reiniciará. Transcurrido un rato la página se refrescará bajo Estado verás la tabla que lista la dirección .onion del servicio. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de Tor Browser. Deberías poder acceder a tu FreedomBox. (Quizá veas un aviso de certificado porque FreedomBox tiene un certificado autofirmado.) Tor Browser - Plinth Onion Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Tor Onion configurado en la FreedomBox.
Apps accesibles via TorLas siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta. Calendario y Libreta de direcciones (Radicale) Sincronización de ficheros (Syncthing) Búsqueda Web (Searx) Wiki (MediaWiki) Wiki y Blog (Ikiwiki)
Ejecutar un nodo TorCuando se instala Tor se configura por defecto para ejecutarse como puente a la red (bridge relay). Esta opción se puede deshabilitar en la página de configuración de Tor de Plinth. En la parte inferior de página de Tor de Plinth hay una lista de puertos que usa el puente a la red Tor. Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet. Los requisitos para ejecutar un puente a la red se listan en la Tor Relay Guide. En resúmen, se recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más. requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada. recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM.
Usar el puerto Tor SOCKS (avanzado)FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el Host SOCKS a la dirección IP interna de la conexión y pon el Puerto SOCKS a 9050.
Exjemplo con FirefoxTu navegador web se puede configurar para emplear la red Tor para toda tu actividad de navegación. Esto permite eludir la censura y oculta tu dirección IP a los sitios web durante la navegación normal. Para anonimato se recomienda usar el Navegador Tor. Configura tu dirección IP local de FreedomBox y el puerto 9050 como un proxy SOCKS en Firefox. Hay extensiones para facilitar la activación y desactivación del proxy. Configuring Firefox with Tor SOCKS proxy Con en proxy SOCKS configurado puedes acceder cualquier URL de tipo onion diréctamente desde Firefox. FreedomBox tiene una dirección onion v3 propia a la que puedes conectarte por la red Tor (guárdala en tus favoritos para usarla en situaciones de emergencia).
Eludiendo la censura de TorSi tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor). 1. Obtén la configuración de los puentes de Tor BridgeDB Tor BridgeDB 2. Añade las líneas a la configuración de Tor de tu FreedomBox como se muestra. Tor Configuration Page Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Transmission.raw.xml b/doc/manual/es/Transmission.raw.xml index 53149df72..4969e4af0 100644 --- a/doc/manual/es/Transmission.raw.xml +++ b/doc/manual/es/Transmission.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Transmission62019-10-28 09:16:06fioddorSe alinea con la versión 14 del 27 de octubre de 201952019-09-04 09:38:37fioddorCorrección menor42019-09-04 09:33:40fioddorEnlace a nueva página traducida.32019-09-04 09:19:10fioddorRecomendación de seguridad.22019-09-04 09:17:24fioddorCorrección menor12019-09-04 06:58:07fioddorSe crea la versión española.
BitTorrent (Transmission)
¿Qué es Transmission ?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Transmission es un cliente BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona".
Captura de pantallaTransmission Web Interface
Usar TransmissionTras instalar Transmission está accesible en https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission.
Consejos
Transferir Descargas desde la FreedomBoxSe puede añadir el directorio de descargas de Transmission como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web. (Avanzado) Si tienes acceso SSH a tu FreedomBox puedes usar sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. dolphin o Konqueror). Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Transmission62019-10-28 09:16:06fioddorSe alinea con la versión 14 del 27 de octubre de 201952019-09-04 09:38:37fioddorCorrección menor42019-09-04 09:33:40fioddorEnlace a nueva página traducida.32019-09-04 09:19:10fioddorRecomendación de seguridad.22019-09-04 09:17:24fioddorCorrección menor12019-09-04 06:58:07fioddorSe crea la versión española.
BitTorrent (Transmission)
¿Qué es Transmission ?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Transmission es un cliente BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona".
Captura de pantallaTransmission Web Interface
Usar TransmissionTras instalar Transmission está accesible en https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission.
Consejos
Transferir Descargas desde la FreedomBoxSe puede añadir el directorio de descargas de Transmission como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web. (Avanzado) Si tienes acceso SSH a tu FreedomBox puedes usar sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. dolphin o Konqueror). Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Upgrades.raw.xml b/doc/manual/es/Upgrades.raw.xml index a2ea6ff43..99c3afae0 100644 --- a/doc/manual/es/Upgrades.raw.xml +++ b/doc/manual/es/Upgrades.raw.xml @@ -9,4 +9,4 @@ Password: # apt -f install # unattended-upgrade --debug # apt install freedombox -# apt update]]>Si apt-get update te pide confirmación para algo responde que . Si durante la actualización del paquete freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando: InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +# apt update]]>Si apt-get update te pide confirmación para algo responde que . Si durante la actualización del paquete freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando: InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/Users.raw.xml b/doc/manual/es/Users.raw.xml index e246cd390..1c8dc9467 100644 --- a/doc/manual/es/Users.raw.xml +++ b/doc/manual/es/Users.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/Users12019-06-18 13:55:35fioddorSe crea la versión española.
Usuarios y GruposPuedes otorgar acceso a tu FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos admin wiki El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado. Los usuarios del grupo admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). Estas características se pueden cambiar más tarde. Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran. Se pueden desactivar temporalmente las cuentas de usuarios.
Reparos ConocidosActualmente Plinth not distingue entre usuarios y administradores. Todo usuario añadido mediante Plinth tendrá accesso completo al interfaz de Plinth. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/Users12019-06-18 13:55:35fioddorSe crea la versión española.
Usuarios y GruposPuedes otorgar acceso a tu FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos admin wiki El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado. Los usuarios del grupo admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). Estas características se pueden cambiar más tarde. Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran. Se pueden desactivar temporalmente las cuentas de usuarios.
Reparos ConocidosActualmente Plinth not distingue entre usuarios y administradores. Todo usuario añadido mediante Plinth tendrá accesso completo al interfaz de Plinth. Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/ejabberd.raw.xml b/doc/manual/es/ejabberd.raw.xml index 567e8b39a..9eb2a305a 100644 --- a/doc/manual/es/ejabberd.raw.xml +++ b/doc/manual/es/ejabberd.raw.xml @@ -2,4 +2,4 @@ -
es/FreedomBox/Manual/ejabberd22019-09-05 12:44:11fioddorCorrección menor12019-09-05 11:59:04fioddorSe crea la versión española.
Servidor de Mensajería Instantánea (chat) (ejabberd)
¿Qué es XMPP?XMPP es un protocolo federatedo para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan. Con XMPP las conversaciones se pueden securizar de 2 maneras: TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama OMEMO pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo.
Estableciendo un Nombre de DominioPara que funcione XMPP tu FreedomBox necesita tener Nombre de Dominio accesible desde Internet. Puedes leer acerca de la obtención de un Nombre de Dominio en la sección DNS Dinámico de este manual. Una vez tengas ya tu Nombre de Dominio puedes decirle a tu FreedomBox que lo use dándolo de alta en la configuración del sistema. Nota: Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo. Ten en cuenta que de momento PageKite no soporta el protocolo XMPP.
Registrando los usuarios XMPP mediante SSOActualmente todos los usuarios creados con Plinth podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan.
Usar el cliente webTras completar la instalación del módulo XMPP el cliente web JSXC para XMPP está accesible en https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado.
Usar un cliente móvil o de escritorioHay disponibles clientes XMPP para varias platformas móviles y de escritorio.
Enrutado de PuertosSi tu FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP: TCP 5222 (cliente-a-servidor) TCP 5269 (servidor-a-servidor) Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file +
es/FreedomBox/Manual/ejabberd22019-09-05 12:44:11fioddorCorrección menor12019-09-05 11:59:04fioddorSe crea la versión española.
Servidor de Mensajería Instantánea (chat) (ejabberd)
¿Qué es XMPP?XMPP es un protocolo federatedo para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan. Con XMPP las conversaciones se pueden securizar de 2 maneras: TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama OMEMO pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo.
Estableciendo un Nombre de DominioPara que funcione XMPP tu FreedomBox necesita tener Nombre de Dominio accesible desde Internet. Puedes leer acerca de la obtención de un Nombre de Dominio en la sección DNS Dinámico de este manual. Una vez tengas ya tu Nombre de Dominio puedes decirle a tu FreedomBox que lo use dándolo de alta en la configuración del sistema. Nota: Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo. Ten en cuenta que de momento PageKite no soporta el protocolo XMPP.
Registrando los usuarios XMPP mediante SSOActualmente todos los usuarios creados con Plinth podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan.
Usar el cliente webTras completar la instalación del módulo XMPP el cliente web JSXC para XMPP está accesible en https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado.
Usar un cliente móvil o de escritorioHay disponibles clientes XMPP para varias platformas móviles y de escritorio.
Enrutado de PuertosSi tu FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP: TCP 5222 (cliente-a-servidor) TCP 5269 (servidor-a-servidor) Volver a la descripción de Funcionalidades o a las páginas del manual.
InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, January 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox \ No newline at end of file diff --git a/doc/manual/es/freedombox-manual.raw.xml b/doc/manual/es/freedombox-manual.raw.xml index 8940a8c34..2e7a958de 100644 --- a/doc/manual/es/freedombox-manual.raw.xml +++ b/doc/manual/es/freedombox-manual.raw.xml @@ -4,6 +4,24 @@ es/FreedomBox/Manual + + 58 + 2019-12-25 21:08:13 + fioddor + Enlace a página traducida. Se alinea con la versión 80 del 25 de diciembre de 2019. + + + 57 + 2019-12-20 21:18:19 + fioddor + Se alinea con la versión 79 en inglés del 20 de diciembre de 2019 + + + 56 + 2019-12-17 21:17:07 + fioddor + Se alinea con la versión 78 en inglés del 15 de diciembre de 2019 + 55 2019-10-21 14:05:52 @@ -2212,6 +2230,37 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ] +
+ MiniDLNA + MiniDLNA es un servidor multimedia que intenta ser compatible con clientes DLNA/UPnP. +
+ ¿Qué es UPnP/DLNA? + UPnP (Universal plug & play) es un conjunto de protocolos de red que permite a los dispositivos de una red, como PCs, TVs, impresoras etc, reconocerse entre sí y establecer comunicación para compartir datos. Es un protocolo con cero configuración y require solo un servidor multimedia y un reproductor multimedia compatibles con el protocolo. + DLNA se deriva de UPnP como una forma de estandarizar interoperabilidad entre medios. Conforma un estándar/certificación que cumplen muchos dispositivos electrónicos de consumo. +
+
+ Desplegando MiniDLNA en tu FreedomBox. + Para instalar/habilitar el servidor multimedia necesitas navegar a la página MiniDLNA y habilitarlo. Se intenta que la aplicación esté disponible en la red interna y por ello requiere asignarle un interfaz de red configurado para tráfico interno. + Tras la instalación queda disponible una página web en . Incluye información de cuántos ficheros detecta el servidor, cuántas conexiones existen etc. Esto resulta muy útil cuando conectas discos externos con contenido para para verificar que detecta los nuevos archivos como debe. Si no ocurre así, desconectar y activar el servidor lo arreglará. +
+
+ Sistemas de archivo para discos externos. + Al usar un disco externo que se usa también desde sistemas Windows el mejor formato para el sistema de archivos es NTFS. NTFS conservará los permisos de acceso de Linux y la codificación UTF-8 para los nombres de fichero. Esto es útil si los nombres de archivos tienen tildes, eñes u otros signos raros. +
+
+ Enlaces externos + + + (en) + + + + + + + +
+
Lector de Feeds de Noticias (Tiny Tiny RSS) Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. @@ -2366,6 +2415,25 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]
+
+ Alojamiento Git Simple (GitWeb) + GitWeb proporciona alojamiento Git en FreedomBox. Proporciona un interfaz web simple para realizar acciones comunes como ver archivos, diferencias, descripciones de cambio, etc. + Disponible desde versión: 19.19 +
+ Autenticación básica HTTP + Actualmente el GitWeb de FreedomBox solo soporta remotos HTTP. Para evitar tener que introducir la contraseña cada vez que haces pull/push al repositorio puedes editar tu remoto para incluír credenciales. + + Ejemplo: + + + Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de la red solo apreciará el nombre de dominio. + Nota: Al usar este método tu contraseña se almacenará en claro en el fichero .git/config del repositorio local. +
+
+ Réplicas Espejo + Aunque tus repositorios se albergan principalmente en tu propia FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo. +
+
Servidor SIP (Repro) @@ -2955,6 +3023,34 @@ echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini
+
+ Simple Git Hosting (GitWeb) + Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. + To learn more on how to use Git visit Git tutorial. + Available since version: 19.19 +
+ Managing the repositories + After installation of GitWeb, a new repository can be created. It can be marked as private to limit access. +
+
+ Access + GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb +
+
+ HTTP basic auth + 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. + + Example: + + + Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. + Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. +
+
+ Mirroring + Though your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. +
+
Sistema @@ -9806,6 +9902,50 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release Notes The following are the release notes for each FreedomBox version. +
+ FreedomBox 19.24 (2019-12-30) + + + app: Fix JavaScript doesn't run on first visit + + + samba: Add private shares + + + firewall: Support upgrading firewalld to 0.8 + + + deluge: Add systemd sandboxing features + + + infinoted: Add systemd sandboxing features + + + storage: Add systemd sandboxing features to udiskie service + + + upgrades: Add systemd sandboxing features to repository setup service + + + security: List whether each app is sandboxed + + + mediawiki: Avoid delay in update script + + + diagnostics: Use new component based API for all diagnostic tests + + + minidlna: Fix showing clients information + + + mediawiki: Fix problem with session cache failing logins + + + locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch + + +
FreedomBox 19.23 (2019-12-16) From 38442ef7a033a047403b14ec4eda73a383768414 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 30 Dec 2019 21:18:16 -0500 Subject: [PATCH 43/43] Release v19.24 to unstable Signed-off-by: James Valleroy --- debian/changelog | 70 ++++++++++++++++++++++++++++++++++++++++++++++ plinth/__init__.py | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1bf2830c8..49312e7f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,73 @@ +plinth (19.24) unstable; urgency=medium + + [ Thomas Vincent ] + * Translated using Weblate (French) + * Translated using Weblate (French) + + [ Veiko Aasa ] + * app: Fix javascript doesn't run on first visit + * samba: private shares + * storage: Tests for the directory validation action + * users: Add tests for the Samba user database + + [ James Valleroy ] + * samba: Fix spelling in description + * debian: Update French debconf translation (Closes: #947386) + - Thanks to Jean-Pierre Giraud for the patch. + * firewall: Support upgrading firewalld to 0.8 + * mldonkey: Add ProtectKernelLogs + * deluge: Use systemd sandboxing features + * infinoted: Use systemd sandboxing features + * storage: Add systemd sandboxing features to udiskie service + * upgrades: Add systemd sandboxing features to repository setup service + * security: List whether each app is sandboxed + * locale: Update translation strings + * debian: Update Dutch debconf translation (Closes: #947136) + - Thanks to Frans Spiesschaert for the patch. + * doc: Fetch latest manual + + [ Michael Breidenbach ] + * Translated using Weblate (German) + * Translated using Weblate (Swedish) + + [ Nektarios Katakis ] + * Translated using Weblate (Greek) + + [ Doma Gergő ] + * Translated using Weblate (Hungarian) + + [ Allan Nordhøy ] + * Translated using Weblate (Norwegian Bokmål) + + [ Kunal Mehta ] + * mediawiki: Pass --quick when running update.php + + [ Sunil Mohan Adapa ] + * help: Refactor to move app into __init__.py for consistency + * app: Introduce API to return a list of all apps + * app: Introduce API to run diagnostics on an app + * apache: Implement diagnostic test for web server component + * daemon: Implement diagnostic test for daemon component + * daemon: Implement diagnostic test to check if a daemon is running + * firewall: Implement new diagnostic tests to check port status + * diagnostics: Use new component based API for all diagnostic tests + * cosmetic: Yapf and isort fixes + * daemon: Move diagnosing port listening into daemon module + * daemon: Move diagnosing using netcat to daemon module + * apache: Move diagnostics for checking URLs into apache module + * app: Implement API to check if app/component has diagnostics + * views: Don't require sending diagnostics module name separately + * minidlna: Fix showing clients information + * mediawiki: Fix problem with session cache failing logins + + [ Ralf Barkow ] + * Translated using Weblate (German) + + [ erlendnagel ] + * Translated using Weblate (Dutch) + + -- James Valleroy Mon, 30 Dec 2019 21:17:58 -0500 + plinth (19.23) unstable; urgency=medium [ Thomas Vincent ] diff --git a/plinth/__init__.py b/plinth/__init__.py index 3660ce13f..444dbc518 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -18,4 +18,4 @@ Package init file. """ -__version__ = '19.23' +__version__ = '19.24'
{% trans "App Name" %} {% trans "Current Vulnerabilities" %} {% trans "Past Vulnerabilities" %}{% trans "Sandboxed" %}
{{ app.name }}{{ app.count }}{{ app.past_count|default_if_none:"❗"}}{{ app.vulns }}{{ app.past_vulns|default_if_none:"❗"}} + {% if app.sandboxed is None %} + {% trans "N/A" %} + {% elif app.sandboxed %} + {% trans "Yes" %} + {% else %} + {% trans "No" %} + {% endif %} +