From 9b9d87bc63102bb705ac717f76c6bf9f349b0a9f Mon Sep 17 00:00:00 2001 From: ikmaak Date: Tue, 14 Jan 2020 00:45:15 +0000 Subject: [PATCH 01/87] Translated using Weblate (Dutch) Currently translated at 84.6% (980 of 1159 strings) --- plinth/locale/nl/LC_MESSAGES/django.po | 71 +++++++++----------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index c24fe322a..fcaf698ed 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2019-12-31 01:40+0000\n" -"Last-Translator: erlendnagel \n" +"POT-Creation-Date: 2019-12-30 20:43-0500\n" +"PO-Revision-Date: 2020-01-14 00:56+0000\n" +"Last-Translator: ikmaak \n" "Language-Team: Dutch \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: Weblate 3.10\n" +"X-Generator: Weblate 3.11-dev\n" "X-Language: nl_NL\n" "X-Source-Language: C\n" @@ -30,10 +30,9 @@ msgid "FreedomBox" msgstr "FreedomBox" #: plinth/daemon.py:85 -#, fuzzy, python-brace-format -#| msgid "Service %(service_name)s is running." +#, python-brace-format msgid "Service {service_name} is running" -msgstr "Service %(service_name)s wordt uitgevoerd." +msgstr "Service {service_name} wordt uitgevoerd" #: plinth/daemon.py:111 #, python-brace-format @@ -208,6 +207,8 @@ msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" +"\"Sleutel in archief\" wil zeggen dat een sleutel, beschermd met een " +"wachtwoord, is opgeslagen in de backup." #: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" @@ -299,7 +300,7 @@ msgstr "SSH toegang geweigerd" #: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." -msgstr "" +msgstr "Het opslag pad is niet leeg, en ook geen lege bestaande backup opslag." #: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." @@ -648,19 +649,13 @@ msgstr "" "Er is ook een webgebaseerde terminal beschikbaar voor consoleactiviteiten." #: 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 "" -"Indien ingeschakeld, is Cockpit beschikbaar op het /" -"_cockpit/ pad op de webserver. Het kan geraadpleegd worden door iedere gebruiker op {box_name} die lid is van de " -"systeembeheerdergroep (admin)." +"Het kan geraadpleegd worden door iedere gebruiker" +" op {box_name} die lid is van de systeembeheerdergroep (admin)." #: plinth/modules/cockpit/__init__.py:63 msgid "" @@ -824,19 +819,14 @@ msgid "File Sharing" msgstr "Delen van bestanden" #: plinth/modules/coquelicot/__init__.py:45 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " msgid "" "Coquelicot is a \"one-click\" file sharing web application with a focus on " "protecting users' privacy. It is best used for quickly sharing a single " "file. " msgstr "" "Coquelicot is een programma om snel en eenvoudig bestanden te delen. Het is " -"ontworpen zodat de privacy van gebruikers wordt beschermd. Coquelicot is " -"bij uitstek geschikt om gemakkelijk een enkel bestand te delen. " +"ontworpen zodat de privacy van gebruikers wordt beschermd. Coquelicot is bij " +"uitstek geschikt om gemakkelijk een enkel bestand te delen. " #: plinth/modules/coquelicot/__init__.py:48 msgid "" @@ -946,19 +936,12 @@ msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge is een BitTorrent Cliënt met web-bediening." #: 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 "" -"Indien ingeschakeld, is de Deluge web-client beschikbaar via het /deluge pad op de webserver. Het standaardwachtwoord is " -"'deluge', maar dit moet zo snel mogelijk na activering gewijzigd worden." +"Het standaardwachtwoord is 'deluge', maar dit moet zo snel mogelijk na " +"activering gewijzigd worden." #: plinth/modules/deluge/__init__.py:51 #: plinth/modules/transmission/__init__.py:57 @@ -1010,10 +993,8 @@ msgid "Diagnostic Results" msgstr "Resultaten Diagnostische test" #: 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" +msgstr "Deze applicatie heeft geen diagnosetests" #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 msgid "Test" @@ -1497,18 +1478,14 @@ msgstr "" "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." +#, python-brace-format msgid "Port {name} ({details}) available for internal networks" -msgstr "" -"%(service_name)s is alleen beschikbaar binnen interne netwerken." +msgstr "Poort {name} ({details}) is beschikbaar binnen interne netwerken" #: plinth/modules/firewall/components.py:138 -#, fuzzy, python-brace-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-brace-format msgid "Port {name} ({details}) available for external networks" -msgstr "" -"%(service_name)s is alleen beschikbaar binnen interne netwerken." +msgstr "Poort {name} ({details})is beschikbaar voor externe netwerken" #: plinth/modules/firewall/components.py:143 #, python-brace-format @@ -1651,10 +1628,8 @@ msgid "Read-write access to Git repositories" msgstr "" #: plinth/modules/gitweb/forms.py:59 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository URL." -msgstr "Foutieve hostnaam" +msgstr "Ongeldige repository URL." #: plinth/modules/gitweb/forms.py:69 #, fuzzy @@ -1816,7 +1791,7 @@ msgstr "Documentatie" #: 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" +msgstr "Handleiding" #: plinth/modules/help/__init__.py:47 plinth/modules/help/help.py:58 #: plinth/modules/help/templates/help_support.html:24 From aa69585cb667762c94cd9ab9f35fc0a784bec8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Thu, 16 Jan 2020 05:57:41 +0000 Subject: [PATCH 02/87] samba: Fix spelling Reviewed-by: Veiko Aasa --- plinth/modules/samba/templates/samba.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plinth/modules/samba/templates/samba.html b/plinth/modules/samba/templates/samba.html index 02bb81f4f..ef11d8aa4 100644 --- a/plinth/modules/samba/templates/samba.html +++ b/plinth/modules/samba/templates/samba.html @@ -39,7 +39,7 @@

{% trans "Shares" %}

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

@@ -69,7 +69,7 @@ class="btn btn-default" name="{{ share_type.0 }}_share" value="enable" {% endif %} {% if disk.filesystem_type == 'vfat' %} - title='{% trans "vfat partitions are not supported" %}' disabled + title='{% trans "VFAT partitions are not supported" %}' disabled {% endif %}>{{ share_type.1 }} {% endfor %} @@ -110,7 +110,7 @@ {{ 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" %}: +

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

{% endif %} From 3a202af843b420dd3743ff547e1aaaeeb72b0e38 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Thu, 16 Jan 2020 19:23:25 +0200 Subject: [PATCH 03/87] samba: Add unit and functional tests - Add functional tests - Add unit tests for samba views - New dependency for running functional tests: smbclient - Make port configurable for the smbclient Signed-off-by: Veiko Aasa Reviewed-by: Joseph Nuthalapati Signed-off-by: Joseph Nuthalapati --- HACKING.md | 6 +- Vagrantfile | 1 + functional_tests/config.ini | 1 + functional_tests/features/samba.feature | 34 +++- functional_tests/install.sh | 2 +- .../step_definitions/application.py | 28 +++ functional_tests/step_definitions/system.py | 5 + functional_tests/support/__init__.py | 2 + functional_tests/support/application.py | 76 +++++++ functional_tests/support/system.py | 13 ++ plinth/modules/samba/tests/test_views.py | 187 ++++++++++++++++++ 11 files changed, 352 insertions(+), 3 deletions(-) create mode 100644 plinth/modules/samba/tests/test_views.py diff --git a/HACKING.md b/HACKING.md index 224bbcea9..d0ca146d1 100644 --- a/HACKING.md +++ b/HACKING.md @@ -171,6 +171,7 @@ $ pip3 install pytest-splinter $ sudo apt install python3-pytest-bdd $ sudo apt install xvfb python3-pytest-xvfb # optional, to avoid opening browser windows $ sudo apt install firefox +$ sudo apt install smbclient # optional, to test samba ``` - Install the latest version of geckodriver. It is usually a single binary which @@ -187,6 +188,9 @@ The VM should have NAT port-forwarding enabled so that 4430 on the host forwards to 443 on the guest. From where the tests are running, the web interface of FreedomBox should be accessible at https://localhost:4430/. +To run samba tests, port 4450 on the host should be forwarded to port 445 +on the guest. + ### Setup FreedomBox Service for tests Via Plinth, create a new user as follows: @@ -202,7 +206,7 @@ tests will create the required user using FreedomBox's first boot process. **When inside a VM you will need to target the guest VM** ```bash -export FREEDOMBOX_URL=https://localhost +export FREEDOMBOX_URL=https://localhost FREEDOMBOX_SAMBA_PORT=445 ``` You will be running `py.test-3`. diff --git a/Vagrantfile b/Vagrantfile index 6e4ce82fa..37737a89e 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -19,6 +19,7 @@ Vagrant.configure(2) do |config| config.vm.box = "freedombox/plinth-dev" config.vm.network "forwarded_port", guest: 443, host: 4430 + config.vm.network "forwarded_port", guest: 445, host: 4450 config.vm.synced_folder ".", "/vagrant", owner: "plinth", group: "plinth" config.vm.provider "virtualbox" do |vb| vb.cpus = 2 diff --git a/functional_tests/config.ini b/functional_tests/config.ini index 77313c4e2..ba78055e2 100644 --- a/functional_tests/config.ini +++ b/functional_tests/config.ini @@ -3,3 +3,4 @@ url = https://localhost:4430 username = tester password = testingtesting delete_root_backup_archives = true +samba_port = 4450 diff --git a/functional_tests/features/samba.feature b/functional_tests/features/samba.feature index d1b500171..cbad4ae50 100644 --- a/functional_tests/features/samba.feature +++ b/functional_tests/features/samba.feature @@ -15,12 +15,13 @@ # along with this program. If not, see . # -@apps @samba +@apps @samba @backups Feature: Samba File Sharing Configure samba file sharing service. Background: Given I'm a logged in user + Given the network device is in the internal firewall zone Given the samba application is installed Scenario: Enable samba application @@ -33,3 +34,34 @@ Scenario: Disable samba application When I disable the samba application Then the samba service should not be running +Scenario: Enable open samba share + Given the samba application is enabled + When I enable the open samba share + Then I can write to the open samba share + And a guest user can write to the open samba share + +Scenario: Enable group samba share + Given the samba application is enabled + When I enable the group samba share + Then I can write to the group samba share + And a guest user can't access the group samba share + +Scenario: Enable home samba share + Given the samba application is enabled + When I enable the home samba share + Then I can write to the home samba share + And a guest user can't access the home samba share + +Scenario: Disable open samba share + Given the samba application is enabled + When I disable the open samba share + Then the open samba share should not be available + +Scenario: Backup and restore samba + Given the samba application is enabled + When I enable the home samba share + And I create a backup of the samba app data + And I disable the home samba share + And I restore the samba app data backup + Then the samba service should be running + And I can write to the home samba share diff --git a/functional_tests/install.sh b/functional_tests/install.sh index 7c5e1f563..68675fe98 100755 --- a/functional_tests/install.sh +++ b/functional_tests/install.sh @@ -5,7 +5,7 @@ IFS=$'\n\t' echo "Installing requirements" sudo apt-get install -yq --no-install-recommends \ python3-pytest python3-pytest-django \ - python3-pip firefox \ + python3-pip firefox smbclient\ xvfb pip3 install wheel pip3 install splinter pytest-splinter pytest-bdd pytest-xvfb diff --git a/functional_tests/step_definitions/application.py b/functional_tests/step_definitions/application.py index 22db2c979..293057173 100644 --- a/functional_tests/step_definitions/application.py +++ b/functional_tests/step_definitions/application.py @@ -602,3 +602,31 @@ def gitweb_repo_privately_writable(): assert application.gitweb_repo_is_writable('Test-repo', with_auth=True) assert application.gitweb_repo_is_writable('Test-repo', with_auth=True, url_git_extension=True) + + +@when(parsers.parse('I {task:w} the {share_type:w} samba share')) +def samba_enable_share(browser, task, share_type): + if task == 'enable': + application.samba_set_share(browser, share_type, status='enabled') + elif task == 'disable': + application.samba_set_share(browser, share_type, status='disabled') + + +@then(parsers.parse('I can write to the {share_type:w} samba share')) +def samba_share_should_be_writable(share_type): + application.samba_assert_share_is_writable(share_type) + + +@then(parsers.parse('a guest user can write to the {share_type:w} samba share')) +def samba_share_should_be_writable_to_guest(share_type): + application.samba_assert_share_is_writable(share_type, as_guest=True) + + +@then(parsers.parse('a guest user can\'t access the {share_type:w} samba share')) +def samba_share_should_not_be_accessible_to_guest(share_type): + application.samba_assert_share_is_not_accessible(share_type, as_guest=True) + + +@then(parsers.parse('the {share_type:w} samba share should not be available')) +def samba_share_should_not_be_available(share_type): + application.samba_assert_share_is_not_available(share_type) diff --git a/functional_tests/step_definitions/system.py b/functional_tests/step_definitions/system.py index 51bc823c0..687a706dd 100644 --- a/functional_tests/step_definitions/system.py +++ b/functional_tests/step_definitions/system.py @@ -347,3 +347,8 @@ def open_main_page(browser): @then(parsers.parse('the main page should be shown')) def main_page_is_shown(browser): assert (browser.url.endswith('/plinth/')) + + +@given(parsers.parse('the network device is in the {zone:w} firewall zone')) +def networks_set_firewall_zone(browser, zone): + system.networks_set_firewall_zone(browser, zone) diff --git a/functional_tests/support/__init__.py b/functional_tests/support/__init__.py index 93300ac79..7b8b633d5 100644 --- a/functional_tests/support/__init__.py +++ b/functional_tests/support/__init__.py @@ -24,3 +24,5 @@ config.read(pathlib.Path(__file__).parent.with_name('config.ini')) config['DEFAULT']['url'] = os.environ.get('FREEDOMBOX_URL', config['DEFAULT']['url']) +config['DEFAULT']['samba_port'] = os.environ.get('FREEDOMBOX_SAMBA_PORT', + config['DEFAULT']['samba_port']) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index 8086bcd58..da01d020d 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -17,9 +17,12 @@ import contextlib import os +import random import shutil +import string import subprocess import tempfile +import urllib from time import sleep import requests @@ -664,6 +667,79 @@ def openvpn_download_profile(browser): return _download_file(browser, url) +def samba_set_share(browser, share_type, status='enabled'): + """Enable or disable samba share.""" + disk_name = 'disk' + share_type_name = '{0}_share'.format(share_type) + interface.nav_to_module(browser, 'samba') + for elem in browser.find_by_tag('td'): + if elem.text == disk_name: + share_form = elem.find_by_xpath('(..//*)[2]/form').first + share_btn = share_form.find_by_name(share_type_name).first + if status == 'enabled' and share_btn['value'] == 'enable': + share_btn.click() + elif status == 'disabled' and share_btn['value'] == 'disable': + share_btn.click() + break + + +def _samba_write_to_share(share_type, as_guest=False): + """Write to the samba share, return output messages as string.""" + disk_name = 'disk' + if share_type == 'open': + share_name = disk_name + else: + share_name = '{0}_{1}'.format(disk_name, share_type) + hostname = urllib.parse.urlparse(default_url).hostname + servicename = '\\\\{0}\\{1}'.format(hostname, share_name) + directory = '_plinth-test_{0}'.format(''.join( + random.SystemRandom().choices(string.ascii_letters, k=8))) + port = config['DEFAULT']['samba_port'] + + smb_command = ['smbclient', '-W', 'WORKGROUP', '-p', port] + if as_guest: + smb_command += ['-N'] + else: + smb_command += [ + '-U', '{0}%{1}'.format(config['DEFAULT']['username'], + config['DEFAULT']['password']) + ] + smb_command += [ + servicename, '-c', 'mkdir {0}; rmdir {0}'.format(directory) + ] + + return subprocess.check_output(smb_command).decode() + + +def samba_assert_share_is_writable(share_type, as_guest=False): + """Assert that samba share is writable.""" + output = _samba_write_to_share(share_type, as_guest=False) + + assert not output, output + + +def samba_assert_share_is_not_accessible(share_type, as_guest=False): + """Assert that samba share is not accessible.""" + try: + _samba_write_to_share(share_type, as_guest) + except subprocess.CalledProcessError as err: + err_output = err.output.decode() + assert 'NT_STATUS_ACCESS_DENIED' in err_output, err_output + else: + assert False, 'Can access the share.' + + +def samba_assert_share_is_not_available(share_type): + """Assert that samba share is not accessible.""" + try: + _samba_write_to_share(share_type) + except subprocess.CalledProcessError as err: + err_output = err.output.decode() + assert 'NT_STATUS_BAD_NETWORK_NAME' in err_output, err_output + else: + assert False, 'Can access the share.' + + def searx_enable_public_access(browser): """Enable Public Access in SearX""" interface.nav_to_module(browser, 'searx') diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py index b8be64996..431f069f9 100644 --- a/functional_tests/support/system.py +++ b/functional_tests/support/system.py @@ -417,3 +417,16 @@ def monkeysphere_publish_key(browser, key_type, domain): def open_main_page(browser): with wait_for_page_update(browser): browser.find_link_by_href('/plinth/').first.click() + + +def networks_set_firewall_zone(browser, zone): + """"Set the network device firewall zone as internal or external.""" + nav_to_module(browser, 'networks') + device = browser.find_by_xpath('//span[contains(@class, "label-success") ' + 'and contains(@class, "connection-status-label")]/following::a').first + network_id = device['href'].split('/')[-3] + device.click() + edit_url = "/plinth/sys/networks/{}/edit/".format(network_id) + browser.find_link_by_href(edit_url).first.click() + browser.select('zone', zone) + browser.find_by_tag("form").first.find_by_tag('input')[-1].click() diff --git a/plinth/modules/samba/tests/test_views.py b/plinth/modules/samba/tests/test_views.py new file mode 100644 index 000000000..cf83e09a8 --- /dev/null +++ b/plinth/modules/samba/tests/test_views.py @@ -0,0 +1,187 @@ +# +# 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 . +# +""" +Tests for samba views. +""" + +import json +import urllib +from unittest.mock import patch + +import pytest +from django import urls +from django.contrib.messages.storage.fallback import FallbackStorage +from plinth import module_loader +from plinth.errors import ActionError +from plinth.modules.samba import views + +# For all tests, use plinth.urls instead of urls configured for testing +pytestmark = pytest.mark.urls('plinth.urls') + +USERS = {"access_ok": ["testuser"], 'password_re_enter_needed': []} + +DISKS = [{ + 'device': '/dev/sda1', + 'label': '', + 'filesystem_type': 'ext4', + 'mount_point': '/', + 'file_system_type': 'ext4', + 'percent_used': 63, + 'size_str': '9.5 GiB', + 'used_str': '5.7 GiB' +}] + +SHARES = [ + { + "name": "disk", + "mount_point": "/", + "path": "/var/lib/freedombox/shares/open_share", + "share_type": "open" + }, + { + "name": "disk_home", + "mount_point": "/", + "path": "/var/lib/freedombox/shares/homes/%u", + "share_type": "home" + }, + { + "name": "otherdisk", + "mount_point": "/media/root/otherdisk", + "path": "/media/root/otherdisk/FreedomBox/shares/homes/open_share", + "share_type": "open" + } +] + + +@pytest.fixture(autouse=True, scope='module') +def fixture_samba_urls(): + """Make sure samba app's URLs are part of plinth.urls.""" + with patch('plinth.module_loader._modules_to_load', new=[]) as modules, \ + patch('plinth.urls.urlpatterns', new=[]): + modules.append('plinth.modules.samba') + module_loader.include_urls() + yield + + +def action_run(action, options, **kwargs): + """Action return values.""" + if action == 'samba' and options == ['get-shares']: + return json.dumps(SHARES) + + return None + + +@pytest.fixture(autouse=True) +def samba_patch_actions(): + """Patch actions scripts runner.""" + with patch('plinth.actions.superuser_run', side_effect=action_run): + yield + + +def make_request(request, view, **kwargs): + """Make request with a message storage.""" + setattr(request, 'session', 'session') + messages = FallbackStorage(request) + setattr(request, '_messages', messages) + response = view(request, **kwargs) + + return response, messages + + +def test_samba_shares_view(rf): + """Test that a share list has correct view data.""" + with patch('plinth.views.AppView.get_context_data', + return_value={'is_enabled': True}), patch( + 'plinth.modules.samba.get_users', + return_value=USERS), patch( + 'plinth.modules.storage.get_disks', return_value=DISKS): + view = views.SambaAppView.as_view() + response, _ = make_request(rf.get(''), view) + + assert response.context_data['disks'] == DISKS + assert response.context_data['shared_mounts'] == { + '/': ['open', 'home'], + '/media/root/otherdisk': ['open'] + } + assert response.context_data['unavailable_shares'] == [{ + 'mount_point': + '/media/root/otherdisk', + 'name': + 'otherdisk', + 'path': + '/media/root/otherdisk/FreedomBox/shares/homes/open_share', + 'share_type': + 'open' + }] + assert response.context_data['users'] == USERS + assert response.status_code == 200 + + +def test_enable_samba_share_view(rf): + """Test that enabling share sends correct success message.""" + form_data = {'filesystem_type': 'ext4', 'open_share': 'enable'} + mount_point = urllib.parse.quote('/') + response, messages = make_request( + rf.post('', data=form_data), views.share, mount_point=mount_point) + + assert list(messages)[0].message == 'Share enabled.' + assert response.status_code == 302 + assert response.url == urls.reverse('samba:index') + + +def test_enable_samba_share_failed_view(rf): + """Test that share enabling failure sends correct error message.""" + form_data = {'filesystem_type': 'ext4', 'open_share': 'enable'} + mount_point = urllib.parse.quote('/') + error_message = 'Sharing failed' + with patch('plinth.modules.samba.add_share', + side_effect=ActionError(error_message)): + response, messages = make_request( + rf.post('', data=form_data), views.share, mount_point=mount_point) + + assert list(messages)[0].message == 'Error enabling share: {0}'.format( + error_message) + assert response.status_code == 302 + assert response.url == urls.reverse('samba:index') + + +def test_disable_samba_share(rf): + """Test that enabling share sends correct success message.""" + form_data = {'filesystem_type': 'ext4', 'open_share': 'disable'} + mount_point = urllib.parse.quote('/') + response, messages = make_request( + rf.post('', data=form_data), views.share, mount_point=mount_point) + + assert list(messages)[0].message == 'Share disabled.' + assert response.status_code == 302 + assert response.url == urls.reverse('samba:index') + + +def test_disable_samba_share_failed_view(rf): + """Test that share disabling failure sends correct error message.""" + form_data = {'filesystem_type': 'ext4', 'open_share': 'disable'} + mount_point = urllib.parse.quote('/') + error_message = 'Unsharing failed' + with patch('plinth.modules.samba.delete_share', + side_effect=ActionError(error_message)): + response, messages = make_request( + rf.post('', data=form_data), views.share, mount_point=mount_point) + + assert list(messages)[ + 0].message == 'Error disabling share: {0}'.format(error_message) + assert response.status_code == 302 + assert response.url == urls.reverse('samba:index') From bf9d8229437ca7ee030bae61acccea7867792522 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 2 Jan 2020 18:29:56 -0800 Subject: [PATCH 04/87] style: Fix incorrect margins for containers in mobile view Signed-off-by: Sunil Mohan Adapa Reviewed-by: Joseph Nuthalapati --- static/themes/default/css/plinth.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index ff4d19969..ef0f304c6 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -601,12 +601,4 @@ a.menu_link_active { .header-bar .toggle-button { transform: scale(1.2); } - - .content-container { - margin: 0 10vw; - } - - .card-list { - margin: 20px 10vw; - } } From f7109cceef5c5ce77bf83cbf2ecce77b83db827d Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 2 Jan 2020 18:30:35 -0800 Subject: [PATCH 05/87] style: Fix responsiveness for app header - 767 is the maximum for that size used by bootstrap. 768 and up are treated as different size. - magin-bottom is redundant - Don't do text-align: center for description text. It does not match with form elements and heading that follow. It also makes reading longer text harder. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Joseph Nuthalapati --- static/themes/default/css/plinth.css | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index ef0f304c6..241a2eb69 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -561,12 +561,10 @@ a.menu_link_active { grid-column: 1; } -@media screen and (max-width: 768px) { +@media screen and (max-width: 767px) { .app-header { display: flex; flex-flow: column; - margin-bottom: 20px; - text-align: center; } .app-header img { From 5b0235751dade29d877e30ac6a5b808d9d9bab6b Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Wed, 15 Jan 2020 21:59:09 +0000 Subject: [PATCH 06/87] Translated using Weblate (French) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 128 ++++++++++--------------- 1 file changed, 49 insertions(+), 79 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index cd6c77a90..d76cd294c 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: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-07 06:21+0000\n" +"PO-Revision-Date: 2020-01-17 21: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\n" +"X-Generator: Weblate 3.10.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -28,10 +28,9 @@ msgid "FreedomBox" msgstr "FreedomBox" #: plinth/daemon.py:85 -#, fuzzy, python-brace-format -#| msgid "Service %(service_name)s is running." +#, python-brace-format msgid "Service {service_name} is running" -msgstr "Le service %(service_name)s est en fonctionnement." +msgstr "Le service {service_name} est en fonctionnement." #: plinth/daemon.py:111 #, python-brace-format @@ -1035,10 +1034,8 @@ msgid "Diagnostic Results" msgstr "Résultats des 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" +msgstr "Cette application n'est pas compatible avec les tests de diagnostic." #: plinth/modules/diagnostics/templates/diagnostics_results.html:25 msgid "Test" @@ -1532,18 +1529,14 @@ msgstr "" "Internet." #: plinth/modules/firewall/components.py:130 -#, fuzzy, python-brace-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-brace-format msgid "Port {name} ({details}) available for internal networks" -msgstr "" -"%(service_name)s n'est disponible que sur les réseaux internes." +msgstr "Port {name} ({détails}) disponible pour les réseaux internes" #: plinth/modules/firewall/components.py:138 -#, fuzzy, python-brace-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-brace-format msgid "Port {name} ({details}) available for external networks" -msgstr "" -"%(service_name)s n'est disponible que sur les réseaux internes." +msgstr "Port {name} ({détails}) disponible pour les réseaux externes" #: plinth/modules/firewall/components.py:143 #, python-brace-format @@ -2778,16 +2771,16 @@ msgstr "" "sur ce wiki. Les inscriptions publiques sont également désactivées." #: plinth/modules/mediawiki/forms.py:59 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Défaut" +msgstr "Thème par défaut" #: plinth/modules/mediawiki/forms.py:60 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Choisissez un thème par défaut pour votre installation de MediaWiki. Les " +"utilisateurs peuvent sélectionner leur thème préféré." #: plinth/modules/mediawiki/views.py:74 msgid "Password updated" @@ -2810,10 +2803,8 @@ msgid "Private mode disabled" msgstr "Mode privé désactivé" #: plinth/modules/mediawiki/views.py:122 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Paramètre inchangé" +msgstr "Thème par défaut changé" #: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 @@ -4727,11 +4718,7 @@ msgstr "" "d’autres machines de votre réseau local." #: 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." +#, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " "shares are accessible in the file manager on your computer at location \\" @@ -4739,42 +4726,41 @@ msgid "" "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." +"partage. Les partages activés sont accessibles dans le gestionnaire de " +"fichier de votre ordinateur à l’emplacement \\\\{hostname} (sur Windows) ou " +"smb://{hostname}.local (sur Linux et Mac). Vous pouvez choisir parmi trois " +"types de partages : " #: plinth/modules/samba/__init__.py:61 msgid "Open share - accessible to everyone in your local network." -msgstr "" +msgstr "Partage ouvert : accessible par tout le monde dans votre réseau local." #: plinth/modules/samba/__init__.py:62 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" +"Partage de groupe : accessible uniquement aux utilisateurs FreedomBox qui " +"sont dans le groupe freedombox-share." #: plinth/modules/samba/__init__.py:64 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" +"Partage domestique : chaque utilisateur du groupe freedombox-share a son " +"propre espace privé." #: plinth/modules/samba/__init__.py:68 msgid "Access to the private shares" -msgstr "" +msgstr "Accès aux partages privés" #: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 -#, fuzzy -#| msgid "Shared" msgid "Shares" -msgstr "Partagée" +msgstr "Partages" #: 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." @@ -4783,10 +4769,8 @@ msgstr "" "sur les disques sélectionnés, pas les disques en entier." #: plinth/modules/samba/templates/samba.html:49 -#, fuzzy -#| msgid "Domain Name" msgid "Disk Name" -msgstr "Nom de domaine" +msgstr "Nom de disque" #: plinth/modules/samba/templates/samba.html:51 #: plinth/modules/storage/templates/storage.html:44 @@ -4804,31 +4788,33 @@ msgid "" "\"%(storage_url)s\">storage module page and configure access to the " "shares on the users module page." msgstr "" +"Vous pouvez trouver plus d’informations à propos des disques sur la page du " +"module de stockage et configurer l’accès aux " +"partages sur la page du module utilisateurs." #: plinth/modules/samba/templates/samba.html:109 msgid "Users who can currently access group and home shares" -msgstr "" +msgstr "Utilisateurs pouvant accéder aux partages de groupe et domestiques" #: 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 "" +"Utilisateurs devant ré-entrer leur mot de passe sur la page de changement de " +"mot de passe pour accéder aux partages de groupe et domestiques" #: plinth/modules/samba/templates/samba.html:118 -#, fuzzy -#| msgid "Available Domains" msgid "Unavailable Shares" -msgstr "Domaines disponibles" +msgstr "Partages indisponibles" #: 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é." +msgstr "" +"Partages configurés mais dont le disque n’est pas disponible. Si le disque " +"est rebranché, le partage sera automatiquement activé." #: plinth/modules/samba/templates/samba.html:128 msgid "Share name" @@ -4839,22 +4825,16 @@ msgid "Action" msgstr "Action" #: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 -#, fuzzy -#| msgid "Add Share" msgid "Open Share" -msgstr "Ajouter un partage" +msgstr "Ouvrir 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" +msgstr "Partage de groupe" #: plinth/modules/samba/views.py:63 -#, fuzzy -#| msgid "Homepage" msgid "Home Share" -msgstr "Page d'accueil" +msgstr "Partage domestique" #: plinth/modules/samba/views.py:96 msgid "Share enabled." @@ -4988,10 +4968,6 @@ 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." @@ -5005,6 +4981,10 @@ msgid "" "sandboxing features are in use. Sandboxing mitigates the impact of a " "potentially compromised app to the rest of the system." msgstr "" +"Pour les applications fournissant des services, la colonne \"Bac à sable\" " +"montre si les fonctionnalités d’isolation (sandboxing) sont utilisées. L’" +"isolation limite l’impact sur le reste du système d’une application " +"potentiellement compromise." #: plinth/modules/security/templates/security_report.html:48 msgid "App Name" @@ -5019,26 +4999,20 @@ msgid "Past Vulnerabilities" msgstr "Anciennes failles" #: plinth/modules/security/templates/security_report.html:51 -#, fuzzy -#| msgid "Block Sandbox" msgid "Sandboxed" -msgstr "Bac à sable cubique" +msgstr "Bac à sable" #: plinth/modules/security/templates/security_report.html:62 msgid "N/A" -msgstr "" +msgstr "Non applicable" #: plinth/modules/security/templates/security_report.html:64 -#, fuzzy -#| msgid "yes" msgid "Yes" -msgstr "oui" +msgstr "Oui" #: plinth/modules/security/templates/security_report.html:66 -#, fuzzy -#| msgid "None" msgid "No" -msgstr "Aucun" +msgstr "Non" #: plinth/modules/security/views.py:69 #, python-brace-format @@ -5667,10 +5641,8 @@ msgid "Subdirectory (optional)" msgstr "Sous-répertoire (optionnel)" #: plinth/modules/storage/forms.py:154 -#, fuzzy -#| msgid "Shared" msgid "Share" -msgstr "Partagée" +msgstr "Partage" #: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" @@ -6303,10 +6275,8 @@ msgid "Unable to set SSH keys." msgstr "Impossible de définir les clés SSH." #: 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." +msgstr "Échec du changement de statut de l'utilisateur." #: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." From 5ad0be5d1884fee0fd5adc3eb152a98b7805fe90 Mon Sep 17 00:00:00 2001 From: ikmaak Date: Tue, 14 Jan 2020 00:57:42 +0000 Subject: [PATCH 07/87] Translated using Weblate (Dutch) Currently translated at 85.0% (989 of 1163 strings) --- plinth/locale/nl/LC_MESSAGES/django.po | 46 ++++++++------------------ 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index fcaf698ed..0631da883 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/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-30 20:43-0500\n" -"PO-Revision-Date: 2020-01-14 00:56+0000\n" +"PO-Revision-Date: 2020-01-17 21:21+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch \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.11-dev\n" +"X-Generator: Weblate 3.10.2-dev\n" "X-Language: nl_NL\n" "X-Source-Language: C\n" @@ -667,7 +667,7 @@ msgstr "" #, fuzzy #| msgid "Access Point" msgid "Access" -msgstr "Access Point" +msgstr "Toegang" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." @@ -1632,10 +1632,8 @@ msgid "Invalid repository URL." msgstr "Ongeldige repository URL." #: plinth/modules/gitweb/forms.py:69 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository name." -msgstr "Foutieve hostnaam" +msgstr "Ongeldige repository naam." #: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." @@ -1650,65 +1648,47 @@ msgid "Optional, for displaying on Gitweb." msgstr "" #: plinth/modules/gitweb/forms.py:86 -#, fuzzy -#| msgid "Repository removed." msgid "Repository's owner name" -msgstr "Repository verwijderd." +msgstr "Naam eigenaar repository" #: plinth/modules/gitweb/forms.py:91 -#, fuzzy -#| msgid "Create Repository" msgid "Private repository" -msgstr "Maak Repository" +msgstr "Privérepository" #: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" #: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:145 -#, fuzzy -#| msgid "A share with this name already exists." msgid "A repository with this name already exists." -msgstr "Er bestaat reeds een gedeelde map met deze naam." +msgstr "Er bestaat al een repository met deze naam." #: plinth/modules/gitweb/forms.py:126 -#, fuzzy -#| msgid "Name of the share" msgid "Name of the repository" -msgstr "Naam van de gedeelde bron" +msgstr "Naam van de repository" #: plinth/modules/gitweb/forms.py:130 -#, fuzzy -#| msgid "" -#| "A lowercase alpha-numeric string that uniquely identifies a share. " -#| "Example: media." msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" -"Een aaneengesloten reeks van kleine letters en/of cijfers, die " -"bestandsdeling aanduidt. Bijvoorbeeld: media." +"Een alfanumerieke tekenreeks die op unieke wijze een repository " +"identificeert." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" msgstr "" #: plinth/modules/gitweb/templates/gitweb_configure.html:46 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Maak Repository" +msgstr "Beheer repositories" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 #: plinth/modules/gitweb/templates/gitweb_configure.html:52 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" -msgstr "Maak Repository" +msgstr "Maak repository" #: plinth/modules/gitweb/templates/gitweb_configure.html:59 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Tor relay poort beschikbaar" +msgstr "Geen repositories beschikbaar." #: plinth/modules/gitweb/templates/gitweb_configure.html:67 #, fuzzy, python-format From e0518bb370ef78784bef69faa35f1a7f7a1542f2 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 14 Jan 2020 20:35:02 +0000 Subject: [PATCH 08/87] Translated using Weblate (Greek) Currently translated at 95.0% (1105 of 1163 strings) --- plinth/locale/el/LC_MESSAGES/django.po | 355 ++++++++++++++++--------- 1 file changed, 233 insertions(+), 122 deletions(-) diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 2c9b55af8..5ab3df3db 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-13 14:50+0000\n" +"PO-Revision-Date: 2020-01-17 21:21+0000\n" "Last-Translator: Nektarios Katakis \n" "Language-Team: Greek \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.1\n" +"X-Generator: Weblate 3.10.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -2802,16 +2802,16 @@ msgstr "" "εγγραφές θα είναι επίσης απενεργοποιημένες." #: plinth/modules/mediawiki/forms.py:59 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Προεπιλεγμένο" +msgstr "Προεπιλεγμένη εμφάνιση" #: plinth/modules/mediawiki/forms.py:60 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Επιλέξτε μια προκαθορισμένη εμφάνιση για την εγκατάσταση του wiki σας. Οι " +"χρήστες έχουν την επιλογή να επιλέξουν την εμφάνιση που προτιμούν." #: plinth/modules/mediawiki/views.py:74 msgid "Password updated" @@ -2834,10 +2834,8 @@ msgid "Private mode disabled" msgstr "Η ιδιωτική λειτουργία απενεργοποιήθηκε" #: plinth/modules/mediawiki/views.py:122 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Οι ρυθμίσεις δεν άλλαξαν" +msgstr "Η προεπιλεγμένη εμφάνιση άλλαξε" #: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 @@ -5034,18 +5032,12 @@ msgstr "" "ασφαλείας." #: 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. It also lists " -#| "whether each service is using sandboxing features." 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:39 msgid "" @@ -5053,6 +5045,10 @@ msgid "" "sandboxing features are in use. Sandboxing mitigates the impact of a " "potentially compromised app to the rest of the system." msgstr "" +"Για εφαρμογές που παρέχουν υπηρεσίες, η στήλη \"Sandboxed\" εμφανίζει εάν " +"χρησιμοποιούνται δυνατότητες της υπηρεσίας φιλτραρίσματος. Η δυνατότητα " +"φιλτραρίσματος μετριάζει την επίδραση μιας ενδεχομένως παραβιάσιμης " +"εφαρμογής στο υπόλοιπο σύστημα." #: plinth/modules/security/templates/security_report.html:48 msgid "App Name" @@ -5747,12 +5743,15 @@ msgid "" "root partition. Root partition can be expanded to use this space. This " "will provide you additional free space to store your files." msgstr "" +"Υπάρχει %(expandable_root_size)s διαθέσιμος χώρος μετά το root διαμέρισμα. " +"Το Root διαμέρισμα πρέπει να επεκταθεί για να χρησιμοποιήσετε αυτό το χώρο. " +"Αυτό θα σας δώσει επιπλέον ελεύθερο χώρο για να αποθηκεύσετε τα αρχεία σας." #: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 #: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" -msgstr "" +msgstr "Επεκτείνετε το διαμέρισμα root" #: plinth/modules/storage/templates/storage_expand.html:29 #, python-format @@ -5761,15 +5760,18 @@ msgid "" "%(expandable_root_size)s of additional free space will be available in your " "root partition." msgstr "" +"Παρακαλούμε Δημιουργήστε αντίγραφα ασφαλείας των δεδομένων σας πριν " +"προχωρήσετε. Μετά από αυτήν τηv ενέργεια, %(expandable_root_size)s του " +"ελεύθερου χώρου θα είναι διαθέσιμο στο root διαμέρισμα." #: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" -msgstr "" +msgstr "Σφάλμα επέκτασης του διαμερίσματος: {exception}" #: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." -msgstr "" +msgstr "Το διαμέρισμα επεκτάθηκε με επιτυχία." #: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format @@ -5777,29 +5779,31 @@ msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" +"Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% " +"χρησιμοποιείται, {free_space} είναι ελεύθερος)." #: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." -msgstr "" +msgstr "{drive_vendor} {drive_model} μπορεί να αποσυνδεθεί με ασφάλεια." #: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." -msgstr "" +msgstr "Η συσκευή μπορεί να αποσυνδεθεί με ασφάλεια." #: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" -msgstr "" +msgstr "Σφάλμα κατά την αφαίρεση της συσκευής: {error_message}" #: plinth/modules/syncthing/__init__.py:40 #: plinth/modules/syncthing/manifest.py:28 msgid "Syncthing" -msgstr "" +msgstr "Syncthing" #: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" -msgstr "" +msgstr "Συγχρονισμός αρχείων" #: plinth/modules/syncthing/__init__.py:47 msgid "" @@ -5808,6 +5812,10 @@ msgid "" "deletion of files on one device will be automatically replicated on all " "other devices that also run Syncthing." msgstr "" +"Το Syncthing είναι μια εφαρμογή που συνγρονίζει τα αρχεία σε πολλές " +"συσκευές, π.χ. τον επιτραπέζιο υπολογιστή και το κινητό σας τηλέφωνο. Η " +"δημιουργία, η τροποποίηση ή η διαγραφή αρχείων σε μία συσκευή θα αναπαραχθεί " +"αυτόματα σε όλες τις άλλες συσκευές που εκτελούν επίσης το Syncthing." #: plinth/modules/syncthing/__init__.py:52 #, python-brace-format @@ -5819,18 +5827,26 @@ msgid "" "synchronized with a distinct set of folders. The web interface on " "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" +"Η εκτέλεση του Syncthing στο {box_name} παρέχει ένα επιπλέον σημείο " +"συγχρονισμού για τα δεδομένα σας, το οποίο είναι διαθέσιμο τον περισσότερο " +"χρόνο, επιτρέποντας στις συσκευές σας να συγχρονίζονται συχνότερα. Το " +"{box_name} εκτελεί μια μεμονωμένη παρουσία του Syncthing που μπορεί να " +"χρησιμοποιηθεί από πολλούς χρήστες. Το σύνολο συσκευών κάθε χρήστη μπορεί " +"να συγχρονιστεί με ένα ξεχωριστό σύνολο φακέλων. Η σελίδα ιστού στο " +"{box_name} είναι διαθέσιμη μόνο για χρήστες που ανήκουν στην ομάδα \"admin\" " +"(διαχειριστών)." #: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" -msgstr "" +msgstr "Διαχειριστείτε την εφαρμογή Syncthing" #: plinth/modules/tahoe/__init__.py:43 msgid "Tahoe-LAFS" -msgstr "" +msgstr "Tahoe-LAFS" #: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" -msgstr "" +msgstr "Διανεμημένος χώρος αποθήκευσης αρχείων" #: plinth/modules/tahoe/__init__.py:134 msgid "" @@ -5839,6 +5855,11 @@ msgid "" "nodes. Even if some of the nodes fail, your files can be retrieved from the " "remaining nodes." msgstr "" +"Το Tahoe-LAFS είναι ένα αποκεντρωμένο ασφαλές σύστημα αποθήκευσης αρχείων. " +"Χρησιμοποιεί ασφαλεία που είναι ανεξάρτητη του παροχέα για να αποθηκεύσετε " +"αρχεία πάνω από ένα κατανεμημένο δίκτυο κόμβων αποθηκευτικού χώρου. Ακόμα " +"και αν κάποιοι κόμβοι αποτυγχάνουν, τα αρχεία μπορούν να ανακτηθούν από τους " +"υπόλοιπους κόμβους." #: plinth/modules/tahoe/__init__.py:139 #, python-brace-format @@ -5847,6 +5868,9 @@ msgid "" "Additional introducers can be added, which will introduce this node to the " "other storage nodes." msgstr "" +"Αυτό το {box_name} φιλοξενεί έναν κόμβο αποθήκευσης και έναν \"εισαγωγέα\" " +"από προεπιλογή. Πρόσθετοι \"εισαγωγείς\" μπορούν να προστεθούν, οι οποίοι θα " +"διαφημίσουν αυτόν τον κόμβο στους άλλους κόμβους αποθήκευσης." #: plinth/modules/tahoe/templates/tahoe-post-setup.html:33 #, python-format @@ -5856,36 +5880,41 @@ msgid "" "DATA. You can access Tahoe-LAFS at https://%(domain_name)s:5678." msgstr "" +"Το Tahoe-LAFS όνομα διαδικτύου έχει οριστεί σε %(domain_name)s. " +"Αλλαγή του ονόματος διαδικτύου του FreedomBox χρειάζεται επανεγκατάσταση του " +"Tahoe-LAFS και ΘΑ ΧΑΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΑΣ. Μπορείτε να αποκτήσετε πρόσβαση στο " +"Tahoe-LAFS στη διεύθυνση URL https://%(domain_name)s:5678." #: plinth/modules/tahoe/templates/tahoe-post-setup.html:55 msgid "Local introducer" -msgstr "" +msgstr "Τοπικός εισαγωγέας" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:75 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:92 msgid "Pet Name" -msgstr "" +msgstr "Όνομα \"κατοικίδιου\"" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:72 msgid "Add new introducer" -msgstr "" +msgstr "Προσθέστε νέο εισαγωγέα" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:83 msgid "Add" -msgstr "" +msgstr "Προσθήκη" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:88 msgid "Connected introducers" -msgstr "" +msgstr "Συνδεδεμένοι εισαγωγείς" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:105 msgid "Remove" -msgstr "" +msgstr "Καταργήστε" #: plinth/modules/tor/__init__.py:47 msgid "Tor" -msgstr "" +msgstr "Tor" #: plinth/modules/tor/__init__.py:52 msgid "" @@ -5895,53 +5924,60 @@ msgid "" "the Tor Browser." msgstr "" +"Το Tor είναι ένα ανώνυμο σύστημα επικοινωνίας. Μπορείτε να μάθετε " +"περισσότερα στη διεύθυνση URLTor " +"Project. Για την καλύτερη προστασία όταν σερφάρετε το διαδίκτυο, το Tor " +"Project συνιστά να χρησιμοποιήσετε το πρόγραμμα περιήγησης διαδικτύου Tor." #: plinth/modules/tor/__init__.py:83 msgid "Tor Onion Service" -msgstr "" +msgstr "Υπηρεσία κρεμυδιού Tor" #: plinth/modules/tor/__init__.py:87 msgid "Tor Socks Proxy" -msgstr "" +msgstr "Tor διακομιστής μεσολάβησης τύπου socks5" #: plinth/modules/tor/__init__.py:91 msgid "Tor Bridge Relay" -msgstr "" +msgstr "Γέφυρα/μεσολαβητής Tor" #: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" -msgstr "" +msgstr "Θύρα μεσολαβητή Tor διαθέσιμη" #: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" -msgstr "" +msgstr "Obfs3 μεταφορά καταχωρήθηκε" #: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" -msgstr "" +msgstr "Obfs4 μεταφορά καταχωρήθηκε" #: plinth/modules/tor/__init__.py:225 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" -msgstr "" +msgstr "Πρόσβαση στη διεύθυνση URL {url} με tcp {kind} μέσω του Tor" #: plinth/modules/tor/__init__.py:236 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" -msgstr "" +msgstr "Επιβεβαίωση χρήσης του Tor στο {url} στο προτόκολλο TCP {kind}" #: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" +"Εισαγάγετε μια έγκυρη γέφυρα με αυτήν τη μορφή: [μεταφορά] IP: ORPort " +"[αποτύπωμα]" #: plinth/modules/tor/forms.py:88 msgid "Enable Tor" -msgstr "" +msgstr "Ενεργοποίηση Tor" #: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" -msgstr "" +msgstr "Χρησιμοποιήστε εξωτερικές γέφυρες για να συνδεθείτε στο δίκτυο Tor" #: plinth/modules/tor/forms.py:92 msgid "" @@ -5949,10 +5985,14 @@ msgid "" "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" +"Όταν είναι ενεργοποιημένες, οι γέφυρες που ρυθμίζονται παρακάτω θα " +"χρησιμοποιηθούν για τη σύνδεση με το δίκτυο Tor. Χρησιμοποιήστε αυτήν την " +"επιλογή εάν η υπηρεσία παροχής Internet (ISP) αποκλείει ή χρησιμοποιεί " +"συνδέσεις στο δίκτυο Tor. Αυτό θα απενεργοποιήσει τh λειτουργία μεσολαβητή." #: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" -msgstr "" +msgstr "Εξωτερικές γέφυρες" #: plinth/modules/tor/forms.py:99 msgid "" @@ -5960,10 +6000,14 @@ msgid "" "\">https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" +"Μπορείτε να βρείτε μερικές γέφυρες στη διεύθυνση https://bridges.torproject.org/ και " +"να αντιγράψετε τις πληροφορίες της γέφυρας εδώ. Οι τρέχουσες υποστηριζόμενες " +"μεταφορές είναι 'καμία', obfs3, obfs4 και scamblesuit." #: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" -msgstr "" +msgstr "Ενεργοποίηση μεσολαβητή Tor" #: plinth/modules/tor/forms.py:106 #, python-brace-format @@ -5972,10 +6016,13 @@ msgid "" "the Tor network. Do this if you have more than 2 megabits/s of upload and " "download bandwidth." msgstr "" +"Όταν ενεργοποιηθεί, το {box_name} θα τρέξει ένα μεσολαβητή Tor και θα " +"δωρίσει ένα μερος της ταχήτυτας της σύνδεσής σας στο δίκτυο Tor. Κάντε αυτό " +"αν έχετε περισσότερα από 2 Mbps ταχύτητα μεταφόρτωσης και λήψης." #: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" -msgstr "" +msgstr "Ενεργοποίηση γέφυρας μεσολαβητή Tor" #: plinth/modules/tor/forms.py:113 msgid "" @@ -5983,10 +6030,14 @@ msgid "" "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" +"Όταν είναι ενεργοποιημένη, οι πληροφορίες του μεσολαβητή δημοσιεύονται στη " +"βάση δεδομένων της γέφυρας Tor αντί της δημόσιας βάσης δεδομένων μεσολαβητή " +"Tor που καθιστά δυσκολότερη τη λογοκρισία αυτού του κόμβου. Αυτό βοηθά τους " +"άλλους να παρακάμψουν τη λογοκρισία." #: plinth/modules/tor/forms.py:118 msgid "Enable Tor Hidden Service" -msgstr "" +msgstr "Ενεργοποίηση της κρυφής υπηρεσίας Tor" #: plinth/modules/tor/forms.py:120 #, python-brace-format @@ -5995,10 +6046,13 @@ msgid "" "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" +"Μια κρυφή υπηρεσία θα επιτρέψει στο {box_name} να παρέχει επιλεγμένες " +"υπηρεσίες (όπως wiki ή chat) χωρίς να αποκαλύψει τη θέση της. Να μην " +"χρησιμοποιείται για πληρη ανωνυμία παρόλαυτα." #: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" -msgstr "" +msgstr "Κατεβάστε πακέτα λογισμικού μέσω του Tor" #: plinth/modules/tor/forms.py:126 msgid "" @@ -6006,34 +6060,39 @@ msgid "" "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" +"Όταν ενεργοποιηθεί, θα γίνει λήψη του λογισμικού μέσω του δικτύου Tor για " +"εγκαταστάσεις και αναβαθμίσεις. Αυτό προσθέτει ένα βαθμό ιδιωτικότητας και " +"ασφάλειας κατά τη λήψη λογισμικού." #: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" +"Καθορίστε τουλάχιστον μία εξωτερική γέφυρα για να χρησιμοποιήσετε εξωτερικές " +"γέφυρες." #: plinth/modules/tor/manifest.py:29 msgid "Tor Browser" -msgstr "" +msgstr "Tor πρόγραμμα περιήγησης" #: plinth/modules/tor/manifest.py:45 msgid "Orbot: Proxy with Tor" -msgstr "" +msgstr "Orbot: διακομιστής μεσολάβησης με Tor" #: plinth/modules/tor/templates/tor.html:41 msgid "Tor configuration is being updated" -msgstr "" +msgstr "Οι ρυθμίσεις Tor ενημερώνονται" #: plinth/modules/tor/templates/tor.html:50 msgid "Onion Service" -msgstr "" +msgstr "Υπηρεσία κρεμμυδιού" #: plinth/modules/tor/templates/tor.html:52 msgid "Ports" -msgstr "" +msgstr "Θύρες" #: plinth/modules/tor/templates/tor.html:82 msgid "Relay" -msgstr "" +msgstr "Μεσολαβητής" #: plinth/modules/tor/templates/tor.html:84 #, python-format @@ -6041,38 +6100,44 @@ msgid "" "If your %(box_name)s is behind a router or firewall, you should make sure " "the following ports are open, and port-forwarded, if necessary:" msgstr "" +"Εάν το %(box_name)s βρίσκεται πίσω από ένα δρομολογητή ή τείχος προστασίας, " +"θα πρέπει να βεβαιωθείτε ότι οι ακόλουθες θύρες είναι ανοιχτές και ότι οι " +"θύρες προωθούνται, εάν είναι απαραίτητο:" #: plinth/modules/tor/templates/tor.html:112 msgid "SOCKS" -msgstr "" +msgstr "SOCKS" #: plinth/modules/tor/templates/tor.html:115 #, python-format msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." -msgstr "" +msgstr "Μια θύρα Tor SOCKS είναι διαθέσιμη στη θύρα 9050 του %(box_name)s σας." #: plinth/modules/transmission/__init__.py:41 #: plinth/modules/transmission/manifest.py:24 msgid "Transmission" -msgstr "" +msgstr "Transmission" #: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" +"Το BitTorrent είναι ένα ομότιμο πρωτόκολλο κοινής χρήσης αρχείων. To " +"πρόγραμμα Transmission χειρίζεται την κοινή χρήση αρχείων bitorrent. " +"Σημειώστε ότι το BitTorrent δεν είναι ανώνυμο." #: plinth/modules/transmission/forms.py:35 msgid "Download directory" -msgstr "" +msgstr "Κατάλογος λήψεων" #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" -msgstr "" +msgstr "Tiny Tiny RSS" #: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" -msgstr "" +msgstr "Αναγνώστης ειδήσεων" #: plinth/modules/ttrss/__init__.py:50 msgid "" @@ -6080,6 +6145,9 @@ msgid "" "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" +"Το tiny tiny RSS είναι ένας αναγνώστης και συλλέκτης ειδήσεων (RSS/Atom), " +"σχεδιασμένος να επιτρέπει την ανάγνωση ειδήσεων από οποιαδήποτε τοποθεσία, " +"ενώ δίνει την εντύπωση μιας πραγματικής εφαρμογής επιφάνειας εργασίας." #: plinth/modules/ttrss/__init__.py:54 #, python-brace-format @@ -6087,6 +6155,8 @@ msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" +"Όταν είναι ενεργοποιημένο, το Tiny Tiny RSS είναι προσβάσιμο από κάθε χρήστη με {box_name} πιστοποιητικά." #: plinth/modules/ttrss/__init__.py:58 msgid "" @@ -6094,38 +6164,44 @@ msgid "" "href=\"/tt-rss-app/\" data-turbolinks=\"false\">/tt-rss-app for " "connecting." msgstr "" +"Όταν χρησιμοποιείτε μια εφαρμογή επιτραπέζιου υπολογιστή ή κινητού για το " +"Tiny Tiny RSS, χρησιμοποιήστε τη διεύθυνση URL /tt-rss-app για τη σύνδεση." #: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" -msgstr "" +msgstr "Διαβάστε και εγγραφείτε τροφοδοσίες ειδήσεων" #: plinth/modules/ttrss/manifest.py:25 msgid "Tiny Tiny RSS (Fork)" -msgstr "" +msgstr "Tiny Tiny RSS (Fork)" #: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" -msgstr "" +msgstr "Ενημερωμένη έκδοση" #: plinth/modules/upgrades/__init__.py:38 msgid "Check for and apply the latest software and security updates." msgstr "" +"Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας." #: plinth/modules/upgrades/forms.py:28 msgid "Enable auto-update" -msgstr "" +msgstr "Ενεργοποίηση αυτόματων ενημερώσεων" #: plinth/modules/upgrades/forms.py:29 msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +"Όταν είναι ενεργοποιημένες, το Freedombox ενημερώνεται αυτόματα μία φορά την " +"ημέρα." #: plinth/modules/upgrades/templates/upgrades.html:45 msgid "Update now" -msgstr "" +msgstr "Ενημέρωση τώρα" #: plinth/modules/upgrades/templates/upgrades.html:54 msgid "Updating..." -msgstr "" +msgstr "Eνημερώνεται..." #: plinth/modules/upgrades/templates/upgrades.html:59 msgid "" @@ -6133,45 +6209,50 @@ msgid "" "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" +" αυτό μπορεί να διαρκέσει πολύ χρόνο για να ολοκληρωθεί . " +"Κατά τη διάρκεια μιας ενημέρωσης, δεν μπορείτε να εγκαταστήσετε εφαρμογές. " +"Επίσης, αυτή η ιστοσελίδα ενδέχεται να μην είναι διαθέσιμη προσωρινά και να " +"εμφανίσει σφάλμα. Σε αυτήν την περίπτωση, ανανεώστε τη σελίδα για να " +"συνεχίσετε." #: plinth/modules/upgrades/templates/upgrades.html:73 msgid "Toggle recent update logs" -msgstr "" +msgstr "Ενεργοποίηση αρχείων καταγραφής πρόσφατων ενημερώσεων" #: plinth/modules/upgrades/templates/upgrades_configure.html:26 #: plinth/modules/upgrades/templates/upgrades_configure.html:27 #: plinth/modules/upgrades/views.py:107 msgid "Manual update" -msgstr "" +msgstr "Μη αυτόματη ενημέρωση" #: plinth/modules/upgrades/views.py:66 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" -msgstr "" +msgstr "Σφάλμα κατά τη ρύθμιση των αυτόματων ενημερώσεων: {error}" #: plinth/modules/upgrades/views.py:70 msgid "Automatic upgrades enabled" -msgstr "" +msgstr "Oι αυτόματες ενημερώσεις ενεργοποιήθηκαν" #: plinth/modules/upgrades/views.py:73 msgid "Automatic upgrades disabled" -msgstr "" +msgstr "Oι αυτόματες ενημερώσεις απενεργοποιήθηκαν" #: plinth/modules/upgrades/views.py:75 msgid "Settings unchanged" -msgstr "" +msgstr "Οι ρυθμίσεις δεν άλλαξαν" #: plinth/modules/upgrades/views.py:101 msgid "Upgrade process started." -msgstr "" +msgstr "Ξεκίνησε η διαδικασία αναβάθμισης." #: plinth/modules/upgrades/views.py:104 msgid "Starting upgrade failed." -msgstr "" +msgstr "Η εκκίνηση της αναβάθμισης απέτυχε." #: plinth/modules/users/__init__.py:51 msgid "Users and Groups" -msgstr "" +msgstr "Χρήστες και ομάδες" #: plinth/modules/users/__init__.py:54 msgid "" @@ -6179,6 +6260,11 @@ msgid "" "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:59 #, python-brace-format @@ -6187,23 +6273,27 @@ msgid "" "relevant to them in the home page. However, only users of the admin " "group may alter apps or system settings." msgstr "" +"Οποιοσδήποτε χρήστης μπορεί να συνδεθεί στην ιστοσελίδα του {box_name} για " +"να δει μια λίστα με τις εφαρμογές που σχετίζονται με αυτόν στην αρχική " +"σελίδα. Ωστόσο, μόνο οι χρήστες της ομάδας admin μπορούν να " +"τροποποιήσουν τις εφαρμογές ή τις ρυθμίσεις του συστήματος." #: plinth/modules/users/__init__.py:128 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" -msgstr "" +msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\"" #: plinth/modules/users/forms.py:40 msgid "Access to all services and system settings" -msgstr "" +msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος" #: plinth/modules/users/forms.py:54 msgid "Username is taken or is reserved." -msgstr "" +msgstr "Το όνομα χρήστη είναι δεσμευμένο." #: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193 msgid "Permissions" -msgstr "" +msgstr "Δικαιώματα" #: plinth/modules/users/forms.py:89 msgid "" @@ -6213,19 +6303,25 @@ msgid "" "able to log in to all services. They can also log in to the system through " "SSH and have administrative privileges (sudo)." msgstr "" +"Επιλέξτε ποιες υπηρεσίες πρέπει να είναι διαθέσιμες στον νέο χρήστη. Ο " +"χρήστης θα μπορεί να συνδεθεί σε υπηρεσίες που υποστηρίζουν την ενιαία " +"σύνδεση μέσω του LDAP, εάν βρίσκονται στην κατάλληλη ομάδα.

Oι " +"χρήστες της ομάδας διαχειριστών θα μπορούν να συνδεθούν σε όλες τις " +"υπηρεσίες. Μπορούν επίσης να συνδεθούν στο σύστημα μέσω του SSH και να έχουν " +"δικαιώματα διαχειριστή (sudo)." #: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339 msgid "Creating LDAP user failed." -msgstr "" +msgstr "Η δημιουργία χρήστη LDAP απέτυχε." #: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." -msgstr "" +msgstr "Απέτυχε η προσθήκη νέου χρήστη στην ομάδα {group}." #: plinth/modules/users/forms.py:148 msgid "Authorized SSH Keys" -msgstr "" +msgstr "Εξουσιοδοτημένα κλειδιά SSH" #: plinth/modules/users/forms.py:150 msgid "" @@ -6233,81 +6329,85 @@ msgid "" "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" +"Η ρύθμιση ενός δημόσιου κλειδιού SSH θα επιτρέψει σε αυτόν το χρήστη να " +"συνδεθεί με ασφάλεια στο σύστημα χωρίς να χρησιμοποιήσει κωδικό πρόσβασης. " +"Μπορείτε να εισαγάγετε πολλαπλά κλειδιά, ένα σε κάθε γραμμή. Οι κενές " +"γραμμές και οι γραμμές που ξεκινούν με # θα αγνοηθούν." #: plinth/modules/users/forms.py:230 msgid "Renaming LDAP user failed." -msgstr "" +msgstr "Η μετονομασία του χρήστη LDAP απέτυχε." #: plinth/modules/users/forms.py:242 msgid "Failed to remove user from group." -msgstr "" +msgstr "Απέτυχε η κατάργηση του χρήστη από την ομάδα." #: plinth/modules/users/forms.py:253 msgid "Failed to add user to group." -msgstr "" +msgstr "Απέτυχε η προσθήκη χρήστη στην ομάδα." #: plinth/modules/users/forms.py:262 msgid "Unable to set SSH keys." -msgstr "" +msgstr "Δεν ήταν δυνατό να προστεθούν τα κλειδιά SSH." #: plinth/modules/users/forms.py:277 msgid "Failed to change user status." -msgstr "" +msgstr "Απέτυχε η αλλαγή της κατάστασης χρήστη." #: plinth/modules/users/forms.py:285 msgid "Cannot delete the only administrator in the system." -msgstr "" +msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα." #: plinth/modules/users/forms.py:315 msgid "Changing LDAP user password failed." -msgstr "" +msgstr "Η αλλαγή του κωδικού πρόσβασης χρήστη LDAP απέτυχε." #: plinth/modules/users/forms.py:348 msgid "Failed to add new user to admin group." -msgstr "" +msgstr "Αποτυχία προσθήκης νέου χρήστη στην ομάδα διαχειριστών." #: plinth/modules/users/forms.py:365 msgid "Failed to restrict console access." -msgstr "" +msgstr "Απέτυχε ο περιορισμός της πρόσβασης στην κονσόλα." #: plinth/modules/users/forms.py:377 msgid "User account created, you are now logged in" -msgstr "" +msgstr "Ο λογαριασμός χρήστη δημιουργήθηκε, τώρα είστε συνδεδεμένοι" #: plinth/modules/users/templates/users_change_password.html:26 #, python-format msgid "Change Password for %(username)s" -msgstr "" +msgstr "Αλλαγή κωδικού πρόσβασης για το %(username)s" #: plinth/modules/users/templates/users_change_password.html:36 msgid "Save Password" -msgstr "" +msgstr "Αποθήκευση κωδικού πρόσβασης" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 #: plinth/modules/users/views.py:57 msgid "Create User" -msgstr "" +msgstr "Δημιουργία χρήστη" #: plinth/modules/users/templates/users_delete.html:26 #: plinth/modules/users/views.py:139 msgid "Delete User" -msgstr "" +msgstr "Διαγραφή χρήστη" #: plinth/modules/users/templates/users_delete.html:29 #, python-format msgid "Delete user %(username)s permanently?" -msgstr "" +msgstr "Να διαγραφεί οριστικά ο χρήστης %(username)s ;" #: plinth/modules/users/templates/users_delete.html:38 #, python-format msgid "Delete %(username)s" -msgstr "" +msgstr "Διαγραφή %(username)s" #: plinth/modules/users/templates/users_firstboot.html:26 msgid "Administrator Account" -msgstr "" +msgstr "Λογαριασμός διαχειριστή" #: plinth/modules/users/templates/users_firstboot.html:29 msgid "" @@ -6315,25 +6415,29 @@ msgid "" "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" +"Επιλέξτε ένα όνομα χρήστη και έναν κωδικό πρόσβασης για να αποκτήσετε " +"πρόσβαση στην ιστοσελίδα. Ο κωδικός πρόσβασης μπορεί να αλλάξει αργότερα. Σε " +"αυτόν το χρήστη θα εκχωρούνται δικαιώματα διαχείρισης. Άλλοι χρήστες μπορούν " +"να προστεθούν αργότερα." #: plinth/modules/users/templates/users_firstboot.html:42 msgid "Create Account" -msgstr "" +msgstr "Δημιουργία λογαριασμού" #: plinth/modules/users/templates/users_list.html:38 #: plinth/modules/users/views.py:74 msgid "Users" -msgstr "" +msgstr "Χρήστες" #: plinth/modules/users/templates/users_list.html:57 #, python-format msgid "Delete user %(username)s" -msgstr "" +msgstr "Διαγραφή χρήστη %(username)s" #: plinth/modules/users/templates/users_list.html:65 #, python-format msgid "Edit user %(username)s" -msgstr "" +msgstr "Επεξεργασία χρήστη %(username)s" #: plinth/modules/users/templates/users_update.html:30 #, python-format @@ -6341,89 +6445,92 @@ msgid "" "Use the change password form to " "change the password." msgstr "" +"Χρησιμοποιήστε τη φόρμα αλλαγής κωδικού " +"πρόσβασης για να αλλάξετε τον κωδικό πρόσβασης." #: plinth/modules/users/templates/users_update.html:42 #: plinth/templates/language-selection.html:32 msgid "Save Changes" -msgstr "" +msgstr "Αποθήκευση αλλαγών" #: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." -msgstr "" +msgstr "Ο χρήστης %(username)s δημιουργήθηκε." #: plinth/modules/users/views.py:93 #, python-format msgid "User %(username)s updated." -msgstr "" +msgstr "O χρήστης %(username)s ενημερώθηκε." #: plinth/modules/users/views.py:94 msgid "Edit User" -msgstr "" +msgstr "Επεξεργασία χρήστη" #: plinth/modules/users/views.py:149 #, python-brace-format msgid "User {user} deleted." -msgstr "" +msgstr "Ο χρήστης {user} διαγράφηκε." #: plinth/modules/users/views.py:156 msgid "Deleting LDAP user failed." -msgstr "" +msgstr "Η διαγραφή του χρήστη LDAP απέτυχε." #: plinth/modules/users/views.py:165 msgid "Change Password" -msgstr "" +msgstr "Αλλαγή κωδικού πρόσβασης" #: plinth/modules/users/views.py:166 msgid "Password changed successfully." -msgstr "" +msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." #: plinth/network.py:41 msgid "PPPoE" -msgstr "" +msgstr "PPPoE" #: plinth/network.py:42 msgid "Generic" -msgstr "" +msgstr "Γενικός" #: plinth/package.py:137 msgid "Error during installation" -msgstr "" +msgstr "Σφάλμα κατά την εγκατάσταση" #: plinth/package.py:159 msgid "installing" -msgstr "" +msgstr "Εγκαθίσταται" #: plinth/package.py:161 msgid "downloading" -msgstr "" +msgstr "Λήψη" #: plinth/package.py:163 msgid "media change" -msgstr "" +msgstr "Αλλαγή μέσου" #: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" -msgstr "" +msgstr "αρχείο ρυθμίσεων: {file}" #: plinth/templates/403.html:25 msgid "403 Forbidden" -msgstr "" +msgstr "403 Απαγορεύεται" #: plinth/templates/403.html:29 #, python-format msgid "You don't have permission to access %(request_path)s on this server." msgstr "" +"Δεν έχετε δικαίωμα πρόσβασης στο %(request_path)s σε αυτόν το διακομιστή." #: plinth/templates/404.html:25 msgid "404" -msgstr "" +msgstr "404" #: plinth/templates/404.html:28 #, python-format msgid "Requested page %(request_path)s was not found." -msgstr "" +msgstr "Η σελίδα %(request_path)s που ζητήθηκε δεν βρέθηκε." #: plinth/templates/404.html:34 msgid "" @@ -6431,10 +6538,14 @@ msgid "" "FreedomBox Service (Plinth) project issue tracker." msgstr "" +"Αν πιστεύετε ότι αυτή η σελίδα που λείπει θα πρέπει να υπάρχει, παρακαλούμε " +"να υποβάλετε ένα σφάλμα στo πρόγραμμα Plinth του πρότζεκτ Freedombox issue " +"tracker." #: plinth/templates/500.html:25 msgid "500" -msgstr "" +msgstr "500" #: plinth/templates/500.html:29 #, python-format From 25317700c24c511b87bf7a71a9739236aed86943 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 18 Jan 2020 14:42:12 +0000 Subject: [PATCH 09/87] Translated using Weblate (French) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index d76cd294c..748b4f40c 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-17 21:21+0000\n" -"Last-Translator: Thomas Vincent \n" +"PO-Revision-Date: 2020-01-18 14:42+0000\n" +"Last-Translator: James Valleroy \n" "Language-Team: French \n" "Language: fr\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.2-dev\n" +"X-Generator: Weblate 3.10.2\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1531,12 +1531,12 @@ msgstr "" #: plinth/modules/firewall/components.py:130 #, python-brace-format msgid "Port {name} ({details}) available for internal networks" -msgstr "Port {name} ({détails}) disponible pour les réseaux internes" +msgstr "Port {name} ({details}) disponible pour les réseaux internes" #: plinth/modules/firewall/components.py:138 #, python-brace-format msgid "Port {name} ({details}) available for external networks" -msgstr "Port {name} ({détails}) disponible pour les réseaux externes" +msgstr "Port {name} ({details}) disponible pour les réseaux externes" #: plinth/modules/firewall/components.py:143 #, python-brace-format From 68e5684d10079b287c54a27db7eec3547e22c7a6 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 15 Jan 2020 14:49:52 -0800 Subject: [PATCH 10/87] network: Fix activating connections that don't have real devices When a WireGuard connection is activated, it create the wireguard interface. Looking for matching devices before activating a connection will then fail. Use get_all_devices() API to get the list of all devices that are real and those that will be created due to connection activation. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/network.py b/plinth/network.py index b061f7540..67a846b8a 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -486,7 +486,7 @@ def activate_connection(connection_uuid): connection = get_connection(connection_uuid) interface = connection.get_interface_name() client = get_nm_client() - for device in client.get_devices(): + for device in client.get_all_devices(): if device.get_iface() == interface: client.activate_connection_async(connection, device, '/', None, _callback, None) From 42569d75ec4729c928990b2886488263e29a168c Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 15 Jan 2020 14:52:08 -0800 Subject: [PATCH 11/87] network: Allow setting the auto-connect property on a connection Also don't require updating all the common properties of a connection when updating only some properties such as 'autoconnect'. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/network.py | 21 ++++++++++++++++----- plinth/tests/test_network.py | 6 ++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/plinth/network.py b/plinth/network.py index 67a846b8a..7f47f36f4 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -307,11 +307,22 @@ def _update_common_settings(connection, connection_uuid, common): connection.add_setting(settings) settings.set_property(nm.SETTING_CONNECTION_UUID, connection_uuid) - settings.set_property(nm.SETTING_CONNECTION_ID, common['name']) - settings.set_property(nm.SETTING_CONNECTION_TYPE, common['type']) - settings.set_property(nm.SETTING_CONNECTION_INTERFACE_NAME, - common['interface']) - settings.set_property(nm.SETTING_CONNECTION_ZONE, common['zone']) + if 'name' in common: + settings.set_property(nm.SETTING_CONNECTION_ID, common['name']) + + if 'type' in common: + settings.set_property(nm.SETTING_CONNECTION_TYPE, common['type']) + + if 'interface' in common: + settings.set_property(nm.SETTING_CONNECTION_INTERFACE_NAME, + common['interface']) + + if 'zone' in common: + settings.set_property(nm.SETTING_CONNECTION_ZONE, common['zone']) + + if 'autoconnect' in common: + settings.set_property(nm.SETTING_CONNECTION_AUTOCONNECT, + common['autoconnect']) return connection diff --git a/plinth/tests/test_network.py b/plinth/tests/test_network.py index 56b60cf76..fabf8bb57 100644 --- a/plinth/tests/test_network.py +++ b/plinth/tests/test_network.py @@ -174,6 +174,7 @@ def test_edit_ethernet_connection(network, ethernet_uuid): ethernet_settings2['common']['name'] = 'plinth_test_eth_new' ethernet_settings2['common']['interface'] = 'eth1' ethernet_settings2['common']['zone'] = 'external' + ethernet_settings2['common']['autoconnect'] = False ethernet_settings2['ipv4']['method'] = 'auto' network.edit_connection(connection, ethernet_settings2) @@ -183,6 +184,7 @@ def test_edit_ethernet_connection(network, ethernet_uuid): settings_connection = connection.get_setting_connection() assert settings_connection.get_interface_name() == 'eth1' assert settings_connection.get_zone() == 'external' + assert not settings_connection.get_autoconnect() settings_ipv4 = connection.get_setting_ip4_config() assert settings_ipv4.get_method() == 'auto' @@ -195,6 +197,7 @@ def test_edit_pppoe_connection(network, pppoe_uuid): pppoe_settings2['common']['name'] = 'plinth_test_pppoe_new' pppoe_settings2['common']['interface'] = 'eth2' pppoe_settings2['common']['zone'] = 'external' + pppoe_settings2['common']['autoconnect'] = False pppoe_settings2['pppoe']['username'] = 'x-user-new' pppoe_settings2['pppoe']['password'] = 'x-password-new' network.edit_connection(connection, pppoe_settings2) @@ -205,6 +208,7 @@ def test_edit_pppoe_connection(network, pppoe_uuid): settings_connection = connection.get_setting_connection() assert settings_connection.get_interface_name() == 'eth2' assert settings_connection.get_zone() == 'external' + assert not settings_connection.get_autoconnect() settings_pppoe = connection.get_setting_pppoe() assert settings_pppoe.get_username() == 'x-user-new' @@ -223,6 +227,7 @@ def test_edit_wifi_connection(network, wifi_uuid): wifi_settings2['common']['name'] = 'plinth_test_wifi_new' wifi_settings2['common']['interface'] = 'wlan1' wifi_settings2['common']['zone'] = 'external' + wifi_settings2['common']['autoconnect'] = False wifi_settings2['ipv4']['method'] = 'auto' wifi_settings2['wireless']['ssid'] = 'plinthtestwifi2' wifi_settings2['wireless']['mode'] = 'infrastructure' @@ -237,6 +242,7 @@ def test_edit_wifi_connection(network, wifi_uuid): settings_connection = connection.get_setting_connection() assert settings_connection.get_interface_name() == 'wlan1' assert settings_connection.get_zone() == 'external' + assert not settings_connection.get_autoconnect() settings_wireless = connection.get_setting_wireless() assert settings_wireless.get_ssid().get_data() == b'plinthtestwifi2' From f444fba6ea5073c4c18b9e25fb69a8d6c29bb1c1 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 16 Jan 2020 03:14:16 -0800 Subject: [PATCH 12/87] network: Add method to re-activate connections after an update - When a connection is updated with newer settings, the changes don't reflect unless the connection is deactivated and reactivated. Add a convenience method to achieve this. - Don't perform any operation if the connection is not active. - Wait until connection is deactivated before reactivating Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/network.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/plinth/network.py b/plinth/network.py index 7f47f36f4..7943f4fcb 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -22,6 +22,7 @@ import collections import logging import socket import struct +import time import uuid from django.utils.translation import ugettext_lazy as _ @@ -515,6 +516,33 @@ def deactivate_connection(connection_uuid): return active_connection +def reactivate_connection(connection_uuid): + """Find and re-activate a network connection to reflect new changes. + + If connection was not active to begin with, do nothing. + + """ + try: + deactivate_connection(connection_uuid) + except ConnectionNotFound: + return # Connection was not active to start with + + # deactivate_connection() is a synchronous call. However, it returns before + # the connection is fully deactivated. When re-activating such connections, + # sometimes, we get a "Authorization request cancelled" error. So, wait + # until the connection is fully deactivated. XXX: Perform proper + # asynchronous waiting instead of polling. Also find a way to avoid the + # problem altogether. + for index in range(10): # pylint: disable=unused-variable + try: + get_active_connection(connection_uuid) + time.sleep(0.1) + except ConnectionNotFound: + break + + activate_connection(connection_uuid) + + def delete_connection(connection_uuid): """Delete an exiting connection from network manager. From 6aa83e71184d142e49fe0722882c7659fbae7702 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 29 Aug 2019 18:38:33 -0400 Subject: [PATCH 13/87] wireguard: Add skeleton for new app Signed-off-by: James Valleroy [sunil: Use the form from base template to show enable/disable properly] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/wireguard/__init__.py | 96 ++++++++++++++ .../data/etc/plinth/modules-enabled/wireguard | 1 + .../services/wireguard-freedombox.xml | 6 + plinth/modules/wireguard/manifest.py | 68 ++++++++++ .../wireguard/templates/wireguard.html | 43 +++++++ plinth/modules/wireguard/urls.py | 27 ++++ plinth/modules/wireguard/views.py | 34 +++++ static/themes/default/icons/wireguard.svg | 120 ++++++++++++++++++ 8 files changed, 395 insertions(+) create mode 100644 plinth/modules/wireguard/__init__.py create mode 100644 plinth/modules/wireguard/data/etc/plinth/modules-enabled/wireguard create mode 100644 plinth/modules/wireguard/data/usr/lib/firewalld/services/wireguard-freedombox.xml create mode 100644 plinth/modules/wireguard/manifest.py create mode 100644 plinth/modules/wireguard/templates/wireguard.html create mode 100644 plinth/modules/wireguard/urls.py create mode 100644 plinth/modules/wireguard/views.py create mode 100644 static/themes/default/icons/wireguard.svg diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py new file mode 100644 index 000000000..6656b4cdb --- /dev/null +++ b/plinth/modules/wireguard/__init__.py @@ -0,0 +1,96 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +FreedomBox app for wireguard. +""" + +from django.utils.translation import ugettext_lazy as _ + +from plinth import app as app_module +from plinth import cfg, frontpage, menu +from plinth.modules.firewall.components import Firewall +from plinth.utils import format_lazy + +from .manifest import clients # noqa, pylint: disable=unused-import + + +version = 1 + +managed_packages = ['wireguard'] + +name = _('WireGuard') + +short_description = _('Virtual Private Network') + +description = [ + _('WireGuard is a fast, modern, secure VPN tunnel.'), + format_lazy( + _('It can be used to connect to a VPN provider which supports ' + 'WireGuard, and to route all outgoing traffic from {box_name} ' + 'through the VPN.'), box_name=_(cfg.box_name)), + format_lazy( + _('A second use case is to connect a mobile device to {box_name} ' + 'while travelling. While connected to a public Wi-Fi network, all ' + 'traffic can be securely relayed through {box_name}.'), + box_name=_(cfg.box_name)) +] + +clients = clients + +port_forwarding_info = [('UDP', 51820)] + +app = None + + +class WireguardApp(app_module.App): + """FreedomBox app for wireguard.""" + + app_id = 'wireguard' + + def __init__(self): + """Create components for the app.""" + super().__init__() + menu_item = menu.Menu('menu-wireguard', name, short_description, + 'wireguard', 'wireguard:index', + parent_url_name='apps') + self.add(menu_item) + + shortcut = frontpage.Shortcut( + 'shortcut-wireguard', name, short_description=short_description, + icon='wireguard', url='/wireguard', clients=clients, + login_required=True) + self.add(shortcut) + + firewall = Firewall('firewall-wireguard', name, + ports=['wireguard-freedombox'], is_external=True) + self.add(firewall) + + +def init(): + """Initialize the module.""" + global app + app = WireguardApp() + + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): + app.set_enabled(True) + + +def setup(helper, old_version=None): + """Install and configure the module.""" + helper.install(managed_packages) + helper.call('post', app.enable) diff --git a/plinth/modules/wireguard/data/etc/plinth/modules-enabled/wireguard b/plinth/modules/wireguard/data/etc/plinth/modules-enabled/wireguard new file mode 100644 index 000000000..e6d87e33c --- /dev/null +++ b/plinth/modules/wireguard/data/etc/plinth/modules-enabled/wireguard @@ -0,0 +1 @@ +plinth.modules.wireguard diff --git a/plinth/modules/wireguard/data/usr/lib/firewalld/services/wireguard-freedombox.xml b/plinth/modules/wireguard/data/usr/lib/firewalld/services/wireguard-freedombox.xml new file mode 100644 index 000000000..9aba2f29e --- /dev/null +++ b/plinth/modules/wireguard/data/usr/lib/firewalld/services/wireguard-freedombox.xml @@ -0,0 +1,6 @@ + + + WireGuard + WireGuard is a fast, modern, secure VPN tunnel. + + diff --git a/plinth/modules/wireguard/manifest.py b/plinth/modules/wireguard/manifest.py new file mode 100644 index 000000000..ac8c286f5 --- /dev/null +++ b/plinth/modules/wireguard/manifest.py @@ -0,0 +1,68 @@ +# +# 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 . +# +""" +Application manifest for WireGuard. +""" + +from django.utils.translation import ugettext_lazy as _ + +from plinth.clients import store_url, validate + +_wireguard_package_id = 'com.wireguard.android' + +clients = validate([{ + 'name': + _('WireGuard'), + 'platforms': [{ + 'type': + 'download', + 'os': + 'windows', + 'url': + 'https://download.wireguard.com/windows-client/wireguard-amd64-0.0.23.msi' + }, { + 'type': + 'download', + 'os': + 'macos', + 'url': + 'https://itunes.apple.com/us/app/wireguard/id1451685025?ls=1&mt=12' + }, { + 'type': 'package', + 'format': 'deb', + 'name': 'wireguard' + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', _wireguard_package_id) + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', _wireguard_package_id) + }, { + 'type': + 'store', + 'os': + 'ios', + 'store_name': + 'app-store', + 'url': + 'https://itunes.apple.com/us/app/wireguard/id1441195209?ls=1&mt=8' + }] +}]) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html new file mode 100644 index 000000000..cb59e21d5 --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -0,0 +1,43 @@ +{% extends "app.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block configuration %} +

{% trans "Server" %}

+

{% trans "Peers allowed to connect to this server" %}

+
    {% trans "public key" %}
+
    {% trans "last connected time" %}
+
    {% trans "edit" %}
+
    {% trans "Add Client" %}
+ +

{% trans "Client" %}

+

{% trans "Peer servers that FreedomBox will connect to" %}

+
    {% trans "endpoint" %}
+
    {% trans "public key" %}
+
    {% trans "last connected time" %}
+
    {% trans "edit" %}
+

{% trans "No connections to remove servers are configured yet." %}

+
    {% trans "Add Server" %}
+ + {{ block.super }} + +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py new file mode 100644 index 000000000..7fb96603b --- /dev/null +++ b/plinth/modules/wireguard/urls.py @@ -0,0 +1,27 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +URLs for the wireguard module. +""" + +from django.conf.urls import url + +from plinth.modules.wireguard import views + +urlpatterns = [ + url(r'^apps/wireguard/$', views.WireguardView.as_view(), name='index'), +] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py new file mode 100644 index 000000000..7962659ec --- /dev/null +++ b/plinth/modules/wireguard/views.py @@ -0,0 +1,34 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Views for WireGuard application. +""" + +import plinth.modules.wireguard as wireguard +from plinth.views import AppView + + +class WireguardView(AppView): + """Serve configuration page.""" + app_id = 'wireguard' + clients = wireguard.clients + name = wireguard.name + description = wireguard.description + diagnostics_module_name = 'wireguard' + show_status_block = False + template_name = 'wireguard.html' + port_forwarding_info = wireguard.port_forwarding_info diff --git a/static/themes/default/icons/wireguard.svg b/static/themes/default/icons/wireguard.svg new file mode 100644 index 000000000..5e54e35a2 --- /dev/null +++ b/static/themes/default/icons/wireguard.svg @@ -0,0 +1,120 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From aa02f4d710a9a9fff787461adb41cff823bdbd43 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 5 Sep 2019 11:46:31 -0400 Subject: [PATCH 14/87] wireguard: Implement adding client Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 57 +++++++++++++++++++ plinth/modules/wireguard/__init__.py | 6 +- plinth/modules/wireguard/forms.py | 29 ++++++++++ plinth/modules/wireguard/manifest.py | 3 +- .../wireguard/templates/wireguard.html | 7 ++- .../templates/wireguard_add_client.html | 37 ++++++++++++ plinth/modules/wireguard/urls.py | 2 + plinth/modules/wireguard/views.py | 27 +++++++++ 8 files changed, 164 insertions(+), 4 deletions(-) create mode 100755 actions/wireguard create mode 100644 plinth/modules/wireguard/forms.py create mode 100644 plinth/modules/wireguard/templates/wireguard_add_client.html diff --git a/actions/wireguard b/actions/wireguard new file mode 100755 index 000000000..261b90452 --- /dev/null +++ b/actions/wireguard @@ -0,0 +1,57 @@ +#!/usr/bin/python3 +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Configuration helper for WireGuard. +""" + +import argparse +import subprocess + +SERVER_INTERFACE = 'wg0' + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + add_client = subparsers.add_parser('add-client', help='Add a client') + add_client.add_argument('publickey', help='Public key for the client') + + subparsers.required = True + return parser.parse_args() + + +def subcommand_add_client(arguments): + """Add a client.""" + subprocess.run( + ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey], + check=True) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 6656b4cdb..fd67c345e 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -18,6 +18,7 @@ FreedomBox app for wireguard. """ +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from plinth import app as app_module @@ -71,8 +72,9 @@ class WireguardApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-wireguard', name, short_description=short_description, - icon='wireguard', url='/wireguard', clients=clients, - login_required=True) + icon='wireguard', description=description, + configure_url=reverse_lazy('wireguard:index'), login_required=True, + clients=clients) self.add(shortcut) firewall = Firewall('firewall-wireguard', name, diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py new file mode 100644 index 000000000..54c65a584 --- /dev/null +++ b/plinth/modules/wireguard/forms.py @@ -0,0 +1,29 @@ +# +# 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 . +# +""" +Forms for wireguard module. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + + +class AddClientForm(forms.Form): + """Form to add client.""" + public_key = forms.CharField( + label=_('Public Key'), strip=True, + help_text=_('Public key of the peer.')) diff --git a/plinth/modules/wireguard/manifest.py b/plinth/modules/wireguard/manifest.py index ac8c286f5..2322d3895 100644 --- a/plinth/modules/wireguard/manifest.py +++ b/plinth/modules/wireguard/manifest.py @@ -33,7 +33,8 @@ clients = validate([{ 'os': 'windows', 'url': - 'https://download.wireguard.com/windows-client/wireguard-amd64-0.0.23.msi' + 'https://download.wireguard.com/windows-client/' + 'wireguard-amd64-0.0.23.msi' }, { 'type': 'download', diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index cb59e21d5..499a3368f 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -27,7 +27,12 @@
    {% trans "public key" %}
    {% trans "last connected time" %}
    {% trans "edit" %}
-
    {% trans "Add Client" %}
+ + + {% trans "Add Client" %} +

{% trans "Client" %}

{% trans "Peer servers that FreedomBox will connect to" %}

diff --git a/plinth/modules/wireguard/templates/wireguard_add_client.html b/plinth/modules/wireguard/templates/wireguard_add_client.html new file mode 100644 index 000000000..3aa891a17 --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_add_client.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + +
+ +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index 7fb96603b..96b2f5de0 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -24,4 +24,6 @@ from plinth.modules.wireguard import views urlpatterns = [ url(r'^apps/wireguard/$', views.WireguardView.as_view(), name='index'), + url(r'^apps/wireguard/client/add/$', views.AddClientView.as_view(), + name='add-client') ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 7962659ec..1e72dd21d 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,9 +18,17 @@ Views for WireGuard application. """ +from django.contrib import messages +from django.contrib.messages.views import SuccessMessageMixin +from django.utils.translation import ugettext as _ +from django.views.generic import FormView + import plinth.modules.wireguard as wireguard +from plinth import actions from plinth.views import AppView +from . import forms + class WireguardView(AppView): """Serve configuration page.""" @@ -32,3 +40,22 @@ class WireguardView(AppView): show_status_block = False template_name = 'wireguard.html' port_forwarding_info = wireguard.port_forwarding_info + + +class AddClientView(SuccessMessageMixin, FormView): + """View to add a client.""" + form_class = forms.AddClientForm + template_name = 'wireguard_add_client.html' + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Add Client') + return context + + def form_valid(self, form): + """Add the client.""" + public_key = form.cleaned_data.get('public_key') + actions.superuser_run( + 'wireguard', ['add-client', public_key]) + messages.success(self.request, _('Added new client.')) From e00c28f36e34c65c2c97a9372ba8869dd33ef027 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 5 Sep 2019 15:15:54 -0400 Subject: [PATCH 15/87] wireguard: Show list of added clients Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 26 +++++++++++++++++++ plinth/modules/wireguard/__init__.py | 2 ++ .../wireguard/templates/wireguard.html | 20 +++++++++++--- plinth/modules/wireguard/views.py | 15 +++++++++-- 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 261b90452..9d0fe0900 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -20,6 +20,7 @@ Configuration helper for WireGuard. """ import argparse +import json import subprocess SERVER_INTERFACE = 'wg0' @@ -30,6 +31,9 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + subparsers.add_parser('setup', help='Setup WireGuard') + subparsers.add_parser('list-clients', help='List all clients') + add_client = subparsers.add_parser('add-client', help='Add a client') add_client.add_argument('publickey', help='Public key for the client') @@ -37,6 +41,28 @@ def parse_arguments(): return parser.parse_args() +def subcommand_setup(_): + """Setup WireGuard.""" + subprocess.run( + ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard'], + check=True) + + +def subcommand_list_clients(_): + """List all clients.""" + clients = [] + output = subprocess.check_output( + ['wg', 'show', SERVER_INTERFACE, 'latest-handshakes']).decode().strip() + for client_info in output.split('\n'): + public_key, latest_handshake = client_info.split() + clients.append({ + 'public_key': public_key, + 'latest_handshake': latest_handshake, + }) + + print(json.dumps(clients)) + + def subcommand_add_client(arguments): """Add a client.""" subprocess.run( diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index fd67c345e..00c1013e8 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -21,6 +21,7 @@ FreedomBox app for wireguard. from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ +from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.modules.firewall.components import Firewall @@ -95,4 +96,5 @@ def init(): def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) + helper.call('post', actions.superuser_run, 'wireguard', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 499a3368f..d65f050c4 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -23,10 +23,24 @@ {% block configuration %}

{% trans "Server" %}

+

{% trans "Peers allowed to connect to this server" %}

-
    {% trans "public key" %}
-
    {% trans "last connected time" %}
-
    {% trans "edit" %}
+ + + + + + + {% for client in server_clients %} + + + + + + {% endfor %} +
{% trans "Public Key" %}{% trans "Last Connected Time" %}{% trans "Edit" %}
{{ client.public_key }}{{ client.latest_handshake }}Edit
+ diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 1e72dd21d..1896d9f13 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,8 +18,10 @@ Views for WireGuard application. """ -from django.contrib import messages +import json + from django.contrib.messages.views import SuccessMessageMixin +from django.urls import reverse_lazy from django.utils.translation import ugettext as _ from django.views.generic import FormView @@ -41,11 +43,20 @@ class WireguardView(AppView): template_name = 'wireguard.html' port_forwarding_info = wireguard.port_forwarding_info + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + clients_list = actions.superuser_run('wireguard', ['list-clients']) + context['server_clients'] = json.loads(clients_list) + return context + class AddClientView(SuccessMessageMixin, FormView): """View to add a client.""" form_class = forms.AddClientForm template_name = 'wireguard_add_client.html' + success_url = reverse_lazy('wireguard:index') + success_message = _('Added new client.') def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" @@ -58,4 +69,4 @@ class AddClientView(SuccessMessageMixin, FormView): public_key = form.cleaned_data.get('public_key') actions.superuser_run( 'wireguard', ['add-client', public_key]) - messages.success(self.request, _('Added new client.')) + return super().form_valid(form) From 415e1eb4ba49f91cd6a81b3f72c33466dc69c587 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 5 Sep 2019 15:49:04 -0400 Subject: [PATCH 16/87] wireguard: Allow deleting a client Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 17 +++++++- .../wireguard/templates/wireguard.html | 8 +++- .../templates/wireguard_delete_client.html | 42 +++++++++++++++++++ plinth/modules/wireguard/urls.py | 4 +- plinth/modules/wireguard/views.py | 25 +++++++++-- 5 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 plinth/modules/wireguard/templates/wireguard_delete_client.html diff --git a/actions/wireguard b/actions/wireguard index 9d0fe0900..ab2adcbf8 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -37,6 +37,10 @@ def parse_arguments(): add_client = subparsers.add_parser('add-client', help='Add a client') add_client.add_argument('publickey', help='Public key for the client') + remove_client = subparsers.add_parser('remove-client', + help='Remove a client') + remove_client.add_argument('publickey', help='Public key for the client') + subparsers.required = True return parser.parse_args() @@ -54,7 +58,11 @@ def subcommand_list_clients(_): output = subprocess.check_output( ['wg', 'show', SERVER_INTERFACE, 'latest-handshakes']).decode().strip() for client_info in output.split('\n'): - public_key, latest_handshake = client_info.split() + try: + public_key, latest_handshake = client_info.split() + except ValueError: + continue + clients.append({ 'public_key': public_key, 'latest_handshake': latest_handshake, @@ -70,6 +78,13 @@ def subcommand_add_client(arguments): check=True) +def subcommand_remove_client(arguments): + """Remove a client.""" + subprocess.run( + ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey, 'remove'], + check=True) + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index d65f050c4..7565e6a96 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -30,13 +30,17 @@ {% trans "Public Key" %} {% trans "Last Connected Time" %} - {% trans "Edit" %} + {% trans "Delete" %} {% for client in server_clients %} {{ client.public_key }} {{ client.latest_handshake }} - Edit + + + {% endfor %} diff --git a/plinth/modules/wireguard/templates/wireguard_delete_client.html b/plinth/modules/wireguard/templates/wireguard_delete_client.html new file mode 100644 index 000000000..b69efd23b --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_delete_client.html @@ -0,0 +1,42 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +

+ {% trans "Are you sure that you want to delete this client?" %} +

+

+ {{ public_key }} +

+ +
+ {% csrf_token %} + + +
+ +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index 96b2f5de0..d7b72da6a 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -25,5 +25,7 @@ from plinth.modules.wireguard import views urlpatterns = [ url(r'^apps/wireguard/$', views.WireguardView.as_view(), name='index'), url(r'^apps/wireguard/client/add/$', views.AddClientView.as_view(), - name='add-client') + name='add-client'), + url(r'^apps/wireguard/client/(?P[^/]+)/delete/$', + views.DeleteClientView.as_view(), name='delete-client'), ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 1896d9f13..b47eefb6b 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -20,10 +20,12 @@ Views for WireGuard application. import json +from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin +from django.shortcuts import redirect from django.urls import reverse_lazy from django.utils.translation import ugettext as _ -from django.views.generic import FormView +from django.views.generic import FormView, TemplateView import plinth.modules.wireguard as wireguard from plinth import actions @@ -67,6 +69,23 @@ class AddClientView(SuccessMessageMixin, FormView): def form_valid(self, form): """Add the client.""" public_key = form.cleaned_data.get('public_key') - actions.superuser_run( - 'wireguard', ['add-client', public_key]) + actions.superuser_run('wireguard', ['add-client', public_key]) return super().form_valid(form) + + +class DeleteClientView(SuccessMessageMixin, TemplateView): + """View to delete a client.""" + template_name = 'wireguard_delete_client.html' + + def get_context_data(self, **kwargs): + """Return additional context data for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Delete Client') + context['public_key'] = self.kwargs['public_key'] + return context + + def post(self, request, public_key): + """Delete the client.""" + actions.superuser_run('wireguard', ['remove-client', public_key]) + messages.success(request, _('Client deleted.')) + return redirect('wireguard:index') From 5d287ce579b3e3412c04163a52ef14aaea1063ea Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Fri, 6 Sep 2019 10:09:23 -0400 Subject: [PATCH 17/87] wireguard: Add client info view Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 52 +++++++++++++------ plinth/modules/wireguard/__init__.py | 8 +++ .../wireguard/templates/wireguard.html | 33 ++++++++---- .../templates/wireguard_show_client.html | 39 ++++++++++++++ plinth/modules/wireguard/urls.py | 2 + plinth/modules/wireguard/views.py | 23 ++++++-- 6 files changed, 127 insertions(+), 30 deletions(-) create mode 100644 plinth/modules/wireguard/templates/wireguard_show_client.html diff --git a/actions/wireguard b/actions/wireguard index ab2adcbf8..a8a309316 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -23,6 +23,8 @@ import argparse import json import subprocess +PUBLIC_KEY_HELP = 'Public key for the client' + SERVER_INTERFACE = 'wg0' @@ -32,14 +34,14 @@ def parse_arguments(): subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') subparsers.add_parser('setup', help='Setup WireGuard') - subparsers.add_parser('list-clients', help='List all clients') + subparsers.add_parser('get-info', help='Get server and clients info') add_client = subparsers.add_parser('add-client', help='Add a client') - add_client.add_argument('publickey', help='Public key for the client') + add_client.add_argument('publickey', help=PUBLIC_KEY_HELP) remove_client = subparsers.add_parser('remove-client', help='Remove a client') - remove_client.add_argument('publickey', help='Public key for the client') + remove_client.add_argument('publickey', help=PUBLIC_KEY_HELP) subparsers.required = True return parser.parse_args() @@ -52,23 +54,39 @@ def subcommand_setup(_): check=True) -def subcommand_list_clients(_): - """List all clients.""" - clients = [] +def subcommand_get_info(_): + """Get server and clients info.""" output = subprocess.check_output( - ['wg', 'show', SERVER_INTERFACE, 'latest-handshakes']).decode().strip() - for client_info in output.split('\n'): - try: - public_key, latest_handshake = client_info.split() - except ValueError: - continue + ['wg', 'show', SERVER_INTERFACE, 'dump']).decode().strip() + lines = output.split('\n') + server_data = lines.pop(0).split() + server = { + 'private_key': server_data[0], + 'public_key': server_data[1], + 'listen_port': server_data[2], + 'fwmark': server_data[3], + } - clients.append({ - 'public_key': public_key, - 'latest_handshake': latest_handshake, - }) + clients = [] + for client_line in lines: + client_data = client_line.split() + client_info = { + 'public_key': client_data[0], + 'preshared_key': client_data[1], + 'endpoint': client_data[2], + 'allowed_ips': client_data[3], + 'latest_handshake': client_data[4], + 'transfer_rx': client_data[5], + 'transfer_tx': client_data[6], + 'persistent_keepalive': client_data[7], + } + clients.append(client_info) - print(json.dumps(clients)) + info = { + 'server': server, + 'clients': clients, + } + print(json.dumps(info)) def subcommand_add_client(arguments): diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 00c1013e8..e81fe5bd4 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -18,6 +18,8 @@ FreedomBox app for wireguard. """ +import json + from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ @@ -98,3 +100,9 @@ def setup(helper, old_version=None): helper.install(managed_packages) helper.call('post', actions.superuser_run, 'wireguard', ['setup']) helper.call('post', app.enable) + + +def get_info(): + """Get server and clients info.""" + info = actions.superuser_run('wireguard', ['get-info']) + return json.loads(info) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 7565e6a96..c94ceef0d 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -26,23 +26,38 @@

{% trans "Peers allowed to connect to this server" %}

+ id="server-clients-list"> - {% for client in server_clients %} + {% if server_clients %} + {% for client in server_clients %} + + + + + + {% endfor %} + + {% else %} - - - - {% endfor %} + {% endif %}
{% trans "Public Key" %} {% trans "Last Connected Time" %} {% trans "Delete" %}
+ + {{ client.public_key }} + + {{ client.latest_handshake }} + +
{{ client.public_key }}{{ client.latest_handshake }} - + + {% blocktrans trimmed %} + No peers configured to connect to this {{ box_name }} yet. + {% endblocktrans %}
. +# +{% endcomment %} + +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +

{% trans "Connection Information" %}

+

{% trans "IP address to use:" %}

+

{% trans "Server endpoints:" %}

+

{% trans "Server's public key:" %} {{ server.public_key }}

+

{% trans "Pre-shared key:" %}

+ +

{% trans "Status" %}

+

{% trans "Client Public Key:" %} {{ client.public_key }}

+

{% trans "Data transmitted:" %} {{ client.transfer_tx }}

+

{% trans "Data received:" %} {{ client.transfer_rx }}

+

{% trans "Latest handshake:" %} {{ client.latest_handshake }}

+ +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index d7b72da6a..a454dbd4e 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -26,6 +26,8 @@ urlpatterns = [ url(r'^apps/wireguard/$', views.WireguardView.as_view(), name='index'), url(r'^apps/wireguard/client/add/$', views.AddClientView.as_view(), name='add-client'), + url(r'^apps/wireguard/client/(?P[^/]+)/show/$', + views.ShowClientView.as_view(), name='show-client'), url(r'^apps/wireguard/client/(?P[^/]+)/delete/$', views.DeleteClientView.as_view(), name='delete-client'), ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index b47eefb6b..dcf5acfa1 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,8 +18,6 @@ Views for WireGuard application. """ -import json - from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin from django.shortcuts import redirect @@ -48,8 +46,8 @@ class WireguardView(AppView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) - clients_list = actions.superuser_run('wireguard', ['list-clients']) - context['server_clients'] = json.loads(clients_list) + info = wireguard.get_info() + context['server_clients'] = info['clients'] return context @@ -73,6 +71,23 @@ class AddClientView(SuccessMessageMixin, FormView): return super().form_valid(form) +class ShowClientView(SuccessMessageMixin, TemplateView): + """View to show a client's details.""" + template_name = 'wireguard_show_client.html' + + def get_context_data(self, **kwargs): + """Return additional context data for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Show Client') + public_key = self.kwargs['public_key'] + info = wireguard.get_info() + context['server'] = info['server'] + for client in info['clients']: + if client['public_key'] == public_key: + context['client'] = client + return context + + class DeleteClientView(SuccessMessageMixin, TemplateView): """View to delete a client.""" template_name = 'wireguard_delete_client.html' From 901f89f393ed0655692cbfccfd9abf80a337f158 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Fri, 6 Sep 2019 16:54:09 -0400 Subject: [PATCH 18/87] wireguard: Form to add server Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 41 +++++++++++++++++++ plinth/modules/wireguard/forms.py | 25 +++++++++++ .../wireguard/templates/wireguard.html | 7 +++- .../templates/wireguard_add_server.html | 37 +++++++++++++++++ plinth/modules/wireguard/urls.py | 2 + plinth/modules/wireguard/views.py | 33 +++++++++++++++ 6 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 plinth/modules/wireguard/templates/wireguard_add_server.html diff --git a/actions/wireguard b/actions/wireguard index a8a309316..693477bcb 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -43,6 +43,18 @@ def parse_arguments(): help='Remove a client') remove_client.add_argument('publickey', help=PUBLIC_KEY_HELP) + add_server = subparsers.add_parser('add-server', help='Add a server') + add_server.add_argument('--endpoint', required=True, + help='Server endpoint') + add_server.add_argument('--client-ip', required=True, + help='Client IP address provided by server') + add_server.add_argument('--public-key', required=True, + help='Public key of the server') + add_server.add_argument('--pre-shared-key', help='Pre-shared key') + add_server.add_argument( + '--all-outgoing', action='store_true', + help='Use this connection to send all outgoing traffic') + subparsers.required = True return parser.parse_args() @@ -52,6 +64,9 @@ def subcommand_setup(_): subprocess.run( ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard'], check=True) + subprocess.run( + ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820'], check=True) + # TODO: generate key pair def subcommand_get_info(_): @@ -82,6 +97,7 @@ def subcommand_get_info(_): } clients.append(client_info) + # TODO: Add servers info from other interfaces. info = { 'server': server, 'clients': clients, @@ -103,6 +119,31 @@ def subcommand_remove_client(arguments): check=True) +def subcommand_add_server(arguments): + """Add a server.""" + output = subprocess.check_output( + ['wg', 'show', 'interfaces']).decode().strip() + interfaces = output.split() + interface_num = 1 + for interface in interfaces: + new_interface_name = 'wg' + str(interface_num) + if interface == new_interface_name: + interface_num += 1 + else: + break + + subprocess.run( + ['ip', 'link', 'add', 'dev', new_interface_name, 'type', 'wireguard'], + check=True) + + args = ['wg', 'set', interface, 'peer', arguments.public_key] + if arguments.pre_shared_key: + args += ['preshared-key', arguments.pre_shared_key] + + args += ['endpoint', arguments.endpoint] + subprocess.run(args, check=True) + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index 54c65a584..2fe72d2d4 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -27,3 +27,28 @@ class AddClientForm(forms.Form): public_key = forms.CharField( label=_('Public Key'), strip=True, help_text=_('Public key of the peer.')) + + +class AddServerForm(forms.Form): + """Form to add server.""" + endpoint = forms.CharField( + label=_('Endpoint'), strip=True, + help_text=_('Server endpoint with the form "ip:port".')) + + client_ip_address = forms.CharField( + label=_('Client IP address provided by server'), strip=True, + help_text=_('Client IP address provided by server.')) + + public_key = forms.CharField( + label=_('Public key of the server'), strip=True, + help_text=_('Public key of the server.')) + + pre_shared_key = forms.CharField( + label=_('Pre-shared key'), strip=True, required=False, + help_text=_('Optional: a shared secret key provided by the server to ' + 'add an additional layer of encryption.')) + + all_outgoing_traffic = forms.BooleanField( + label=_('Use this connection to send all outgoing traffic'), + required=False, + help_text=_('Use this connection to send all outgoing traffic.')) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index c94ceef0d..584c7abd6 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -74,7 +74,12 @@
    {% trans "last connected time" %}
    {% trans "edit" %}

{% trans "No connections to remove servers are configured yet." %}

-
    {% trans "Add Server" %}
+
+ + {% trans "Add Server" %} + {{ block.super }} diff --git a/plinth/modules/wireguard/templates/wireguard_add_server.html b/plinth/modules/wireguard/templates/wireguard_add_server.html new file mode 100644 index 000000000..dc508b99c --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_add_server.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + +
+ +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index a454dbd4e..2135867bc 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -30,4 +30,6 @@ urlpatterns = [ views.ShowClientView.as_view(), name='show-client'), url(r'^apps/wireguard/client/(?P[^/]+)/delete/$', views.DeleteClientView.as_view(), name='delete-client'), + url(r'^apps/wireguard/server/add/$', views.AddServerView.as_view(), + name='add-server'), ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index dcf5acfa1..84bf3ff1a 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -104,3 +104,36 @@ class DeleteClientView(SuccessMessageMixin, TemplateView): actions.superuser_run('wireguard', ['remove-client', public_key]) messages.success(request, _('Client deleted.')) return redirect('wireguard:index') + + +class AddServerView(SuccessMessageMixin, FormView): + """View to add a server.""" + form_class = forms.AddServerForm + template_name = 'wireguard_add_server.html' + success_url = reverse_lazy('wireguard:index') + success_message = _('Added new server.') + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Add Server') + return context + + def form_valid(self, form): + """Add the server.""" + endpoint = form.cleaned_data.get('endpoint') + client_ip_address = form.cleaned_data.get('client_ip_address') + public_key = form.cleaned_data.get('public_key') + pre_shared_key = form.cleaned_data.get('pre_shared_key') + all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') + args = ['add-server', '--endpoint', endpoint, '--client-ip', + client_ip_address, '--public-key', public_key] + if pre_shared_key: + # TODO: pass pre-shared key through stdin + args += ['--pre-shared-key', pre_shared_key] + + if all_outgoing_traffic: + args.append('--all-outgoing') + + actions.superuser_run('wireguard', args) + return super().form_valid(form) From 36fdedb9a7eee6dbbc153eb5cb439166854109d6 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 9 Sep 2019 17:40:26 -0400 Subject: [PATCH 19/87] wireguard: List peers in client section Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 60 +++++++++---------- plinth/modules/wireguard/__init__.py | 20 ++++++- .../wireguard/templates/wireguard.html | 60 +++++++++++++------ .../templates/wireguard_show_client.html | 2 +- plinth/modules/wireguard/views.py | 9 ++- 5 files changed, 96 insertions(+), 55 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 693477bcb..411db78c8 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -34,7 +34,8 @@ def parse_arguments(): subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') subparsers.add_parser('setup', help='Setup WireGuard') - subparsers.add_parser('get-info', help='Get server and clients info') + subparsers.add_parser('get-info', + help='Get info for each configured interface') add_client = subparsers.add_parser('add-client', help='Add a client') add_client.add_argument('publickey', help=PUBLIC_KEY_HELP) @@ -70,39 +71,38 @@ def subcommand_setup(_): def subcommand_get_info(_): - """Get server and clients info.""" + """Get info for each configured interface.""" output = subprocess.check_output( - ['wg', 'show', SERVER_INTERFACE, 'dump']).decode().strip() + ['wg', 'show', 'all', 'dump']).decode().strip() lines = output.split('\n') - server_data = lines.pop(0).split() - server = { - 'private_key': server_data[0], - 'public_key': server_data[1], - 'listen_port': server_data[2], - 'fwmark': server_data[3], - } + interfaces = {} + for line in lines: + fields = line.split() + interface_name = fields[0] + if interface_name in interfaces: + peer = { + 'public_key': fields[1], + 'preshared_key': fields[2], + 'endpoint': fields[3], + 'allowed_ips': fields[4], + 'latest_handshake': fields[5], + 'transfer_rx': fields[6], + 'transfer_tx': fields[7], + 'persistent_keepalive': fields[8], + } + interfaces[interface_name]['peers'].append(peer) - clients = [] - for client_line in lines: - client_data = client_line.split() - client_info = { - 'public_key': client_data[0], - 'preshared_key': client_data[1], - 'endpoint': client_data[2], - 'allowed_ips': client_data[3], - 'latest_handshake': client_data[4], - 'transfer_rx': client_data[5], - 'transfer_tx': client_data[6], - 'persistent_keepalive': client_data[7], - } - clients.append(client_info) + else: + interfaces[interface_name] = { + 'interface_name': interface_name, + 'private_key': fields[1], + 'public_key': fields[2], + 'listen_port': fields[3], + 'fwmark': fields[4], + 'peers': [], + } - # TODO: Add servers info from other interfaces. - info = { - 'server': server, - 'clients': clients, - } - print(json.dumps(info)) + print(json.dumps(interfaces)) def subcommand_add_client(arguments): diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index e81fe5bd4..8e703fa3b 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -59,6 +59,8 @@ port_forwarding_info = [('UDP', 51820)] app = None +SERVER_INTERFACE = 'wg0' + class WireguardApp(app_module.App): """FreedomBox app for wireguard.""" @@ -103,6 +105,18 @@ def setup(helper, old_version=None): def get_info(): - """Get server and clients info.""" - info = actions.superuser_run('wireguard', ['get-info']) - return json.loads(info) + """Return server and clients info.""" + output = actions.superuser_run('wireguard', ['get-info']) + info = json.loads(output) + my_server_info = info.pop(SERVER_INTERFACE) + my_client_servers = [interface['peers'][0] or {} + for interface in info.values()] + return { + 'my_server': { + 'public_key': my_server_info['public_key'], + 'clients': my_server_info['peers'], + }, + 'my_client': { + 'servers': my_client_servers, + }, + } diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 584c7abd6..bbbcbd792 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -26,36 +26,36 @@

{% trans "Peers allowed to connect to this server" %}

+ id="server-peers-list"> - {% if server_clients %} - {% for client in server_clients %} - + {% if server_peers %} + {% for peer in server_peers %} + - + + {{ peer.public_key }} + + + - + {% endfor %} {% else %} - + {% endif %}
{% trans "Public Key" %} {% trans "Last Connected Time" %} {% trans "Delete" %}
- - {{ client.public_key }} - - {{ client.latest_handshake }}{{ peer.latest_handshake }} + href="{% url 'wireguard:delete-client' peer.public_key %}">
+ {% blocktrans trimmed %} No peers configured to connect to this {{ box_name }} yet. {% endblocktrans %} -
@@ -69,11 +69,35 @@

{% trans "Client" %}

{% trans "Peer servers that FreedomBox will connect to" %}

-
    {% trans "endpoint" %}
-
    {% trans "public key" %}
-
    {% trans "last connected time" %}
-
    {% trans "edit" %}
-

{% trans "No connections to remove servers are configured yet." %}

+ + + + + + + + {% if client_peers %} + {% for peer in client_peers %} + + + + + + + {% endfor %} + + {% else %} + + + + {% endif %} +
{% trans "Endpoint" %}{% trans "Public Key" %}{% trans "Last Connected Time" %}{% trans "Edit" %}
{{ peer.endpoint }}{{ peer.public_key }}{{ peer.latest_handshake }}Edit
+ {% blocktrans trimmed %} + No connections to remote servers are configured yet. + {% endblocktrans %} +
+ diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 850a453c1..e07238ca9 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -27,7 +27,7 @@

{% trans "Connection Information" %}

{% trans "IP address to use:" %}

{% trans "Server endpoints:" %}

-

{% trans "Server's public key:" %} {{ server.public_key }}

+

{% trans "Server's public key:" %} {{ my_server.public_key }}

{% trans "Pre-shared key:" %}

{% trans "Status" %}

diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 84bf3ff1a..c5bfd454b 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -47,7 +47,8 @@ class WireguardView(AppView): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) info = wireguard.get_info() - context['server_clients'] = info['clients'] + context['server_peers'] = info['my_server']['clients'] + context['client_peers'] = info['my_client']['servers'] return context @@ -79,12 +80,14 @@ class ShowClientView(SuccessMessageMixin, TemplateView): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) context['title'] = _('Show Client') + public_key = self.kwargs['public_key'] info = wireguard.get_info() - context['server'] = info['server'] - for client in info['clients']: + context.update(info) + for client in info['my_server']['clients']: if client['public_key'] == public_key: context['client'] = client + return context From 966b179756fe5e9bde3e9793933e5b4165018db8 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Tue, 10 Sep 2019 18:57:18 -0400 Subject: [PATCH 20/87] wireguard: Add server information view Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 10 +++--- plinth/modules/wireguard/__init__.py | 2 +- .../wireguard/templates/wireguard.html | 24 +++++++------ .../templates/wireguard_show_server.html | 35 +++++++++++++++++++ plinth/modules/wireguard/urls.py | 2 ++ plinth/modules/wireguard/views.py | 19 ++++++++++ 6 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 plinth/modules/wireguard/templates/wireguard_show_server.html diff --git a/actions/wireguard b/actions/wireguard index 411db78c8..5d195a757 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -125,18 +125,16 @@ def subcommand_add_server(arguments): ['wg', 'show', 'interfaces']).decode().strip() interfaces = output.split() interface_num = 1 - for interface in interfaces: + new_interface_name = 'wg1' + while new_interface_name in interfaces: + interface_num += 1 new_interface_name = 'wg' + str(interface_num) - if interface == new_interface_name: - interface_num += 1 - else: - break subprocess.run( ['ip', 'link', 'add', 'dev', new_interface_name, 'type', 'wireguard'], check=True) - args = ['wg', 'set', interface, 'peer', arguments.public_key] + args = ['wg', 'set', new_interface_name, 'peer', arguments.public_key] if arguments.pre_shared_key: args += ['preshared-key', arguments.pre_shared_key] diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 8e703fa3b..88ff30995 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -109,7 +109,7 @@ def get_info(): output = actions.superuser_run('wireguard', ['get-info']) info = json.loads(output) my_server_info = info.pop(SERVER_INTERFACE) - my_client_servers = [interface['peers'][0] or {} + my_client_servers = [interface['peers'] and interface['peers'][0] or {} for interface in info.values()] return { 'my_server': { diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index bbbcbd792..48ca39aa5 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -51,7 +51,7 @@ {% else %} - + {% blocktrans trimmed %} No peers configured to connect to this {{ box_name }} yet. {% endblocktrans %} @@ -70,7 +70,7 @@

{% trans "Client" %}

{% trans "Peer servers that FreedomBox will connect to" %}

+ id="client-peers-list"> @@ -79,21 +79,25 @@ {% if client_peers %} {% for peer in client_peers %} - - - - - - + + + + + + {% endfor %} {% else %} - + {% endif %}
{% trans "Endpoint" %} {% trans "Public Key" %}
{{ peer.endpoint }}{{ peer.public_key }}{{ peer.latest_handshake }}Edit
{{ peer.endpoint }} + + {{ peer.public_key }} + + {{ peer.latest_handshake }}Edit
+ {% blocktrans trimmed %} No connections to remote servers are configured yet. {% endblocktrans %} -
diff --git a/plinth/modules/wireguard/templates/wireguard_show_server.html b/plinth/modules/wireguard/templates/wireguard_show_server.html new file mode 100644 index 000000000..9ad01eaed --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_show_server.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +

{% trans "Server Information" %}

+

{% trans "Endpoint:" %} {{ server.endpoint }}

+

{% trans "Public Key:" %} {{ server.public_key }}

+

{% trans "Pre-shared key:" %} {{ server.preshared_key }}

+

{% trans "Data transmitted:" %} {{ server.transfer_tx }}

+

{% trans "Data received:" %} {{ server.transfer_rx }}

+

{% trans "Latest handshake:" %} {{ server.latest_handshake }}

+ +{% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index 2135867bc..fa2a1f159 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -32,4 +32,6 @@ urlpatterns = [ views.DeleteClientView.as_view(), name='delete-client'), url(r'^apps/wireguard/server/add/$', views.AddServerView.as_view(), name='add-server'), + url(r'^apps/wireguard/server/(?P[^/]+)/show/$', + views.ShowServerView.as_view(), name='show-server'), ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index c5bfd454b..dc8076206 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -140,3 +140,22 @@ class AddServerView(SuccessMessageMixin, FormView): actions.superuser_run('wireguard', args) return super().form_valid(form) + + +class ShowServerView(SuccessMessageMixin, TemplateView): + """View to show a server's details.""" + template_name = 'wireguard_show_server.html' + + def get_context_data(self, **kwargs): + """Return additional context data for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Show Server') + + public_key = self.kwargs['public_key'] + info = wireguard.get_info() + context.update(info) + for server in info['my_client']['servers']: + if server['public_key'] == public_key: + context['server'] = server + + return context From 87a58f1491f377b235709cef2b1ef328a6280009 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 12 Sep 2019 19:15:18 -0400 Subject: [PATCH 21/87] wireguard: Generate key pair Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 5d195a757..1de862a35 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -21,6 +21,8 @@ Configuration helper for WireGuard. import argparse import json +import os +import pathlib import subprocess PUBLIC_KEY_HELP = 'Public key for the client' @@ -62,12 +64,35 @@ def parse_arguments(): def subcommand_setup(_): """Setup WireGuard.""" + key_folder = pathlib.Path('/var/lib/freedombox/wireguard') + private_key_path = key_folder / 'privatekey' + public_key_path = key_folder / 'publickey' + + # TODO: make idempotent + + # create interface subprocess.run( ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard'], check=True) + + # generate key pair + private_key = subprocess.check_output(['wg', 'genkey']) + public_key = subprocess.check_output(['wg', 'pubkey'], input=private_key) + key_folder.mkdir(parents=True, exist_ok=True) + with public_key_path.open(mode='wb') as public_key_file: + public_key_file.write(public_key) + + old_umask = os.umask(0o077) + try: + with private_key_path.open(mode='wb') as private_key_file: + private_key_file.write(private_key) + + finally: + os.umask(old_umask) + subprocess.run( - ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820'], check=True) - # TODO: generate key pair + ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', + str(private_key_path)], check=True) def subcommand_get_info(_): From aed82eca1b3fdf48aea2551098b9f71af18353e7 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 12 Sep 2019 19:39:15 -0400 Subject: [PATCH 22/87] wireguard: Show this box's public key Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/wireguard/__init__.py | 13 +++++++++++++ plinth/modules/wireguard/templates/wireguard.html | 11 +++++++++++ plinth/modules/wireguard/views.py | 1 + 3 files changed, 25 insertions(+) diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 88ff30995..9f830e77c 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -104,6 +104,19 @@ def setup(helper, old_version=None): helper.call('post', app.enable) +def get_public_key(): + """Return this box's public key.""" + public_key_path = '/var/lib/freedombox/wireguard/publickey' + try: + with open(public_key_path) as public_key_file: + public_key = public_key_file.read().strip() + + except FileNotFoundError: + public_key = None + + return public_key + + def get_info(): """Return server and clients info.""" output = actions.superuser_run('wireguard', ['get-info']) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 48ca39aa5..2cc397113 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -25,6 +25,7 @@

{% trans "Server" %}

{% trans "Peers allowed to connect to this server" %}

+ @@ -109,6 +110,16 @@ {% trans "Add Server" %} +

{% trans "Connection Information" %}

+ +

+ {% blocktrans %} + Public key for this {{ box_name }}: + {% endblocktrans %} + +

{{ public_key }}
+

+ {{ block.super }} {% endblock %} diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index dc8076206..0b31789e2 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -46,6 +46,7 @@ class WireguardView(AppView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) + context['public_key'] = wireguard.get_public_key() info = wireguard.get_info() context['server_peers'] = info['my_server']['clients'] context['client_peers'] = info['my_client']['servers'] From 64165c5fbd71d4326aa523dd0572e064341da9e5 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 15 Sep 2019 12:29:19 -0400 Subject: [PATCH 23/87] wireguard: Create network manager connection Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/actions/wireguard b/actions/wireguard index 1de862a35..0a4dc5c42 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -159,6 +159,28 @@ def subcommand_add_server(arguments): ['ip', 'link', 'add', 'dev', new_interface_name, 'type', 'wireguard'], check=True) + connection_name = 'WireGuard-' + new_interface_name + subprocess.run(['nmcli', 'con', 'add', + 'con-name', connection_name, + 'ifname', new_interface_name, + 'type', 'wireguard'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', connection_name, + 'connection.autoconnect', 'TRUE'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', connection_name, + 'connection.zone', 'internal'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', connection_name, + 'ipv4.method', 'manual', + 'ipv4.addresses', arguments.client_ip + '/24'], check=True) + + with open('/var/lib/freedombox/wireguard/privatekey') as private_key_file: + private_key = private_key_file.read().strip() + + subprocess.run(['nmcli', 'con', 'modify', connection_name, + 'wireguard.private-key', private_key], check=True) + args = ['wg', 'set', new_interface_name, 'peer', arguments.public_key] if arguments.pre_shared_key: args += ['preshared-key', arguments.pre_shared_key] From 6b39aa8075824f474665317968125d62b098fea8 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 15 Sep 2019 20:07:36 -0400 Subject: [PATCH 24/87] wireguard: Encode public keys for use in URLs Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/wireguard/templates/wireguard.html | 6 +++--- plinth/modules/wireguard/views.py | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 2cc397113..13a2132ad 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -37,13 +37,13 @@ {% for peer in server_peers %} @@ -83,7 +83,7 @@ diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 0b31789e2..61e89ecfd 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,6 +18,8 @@ Views for WireGuard application. """ +import urllib.parse + from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin from django.shortcuts import redirect @@ -82,7 +84,7 @@ class ShowClientView(SuccessMessageMixin, TemplateView): context = super().get_context_data(**kwargs) context['title'] = _('Show Client') - public_key = self.kwargs['public_key'] + public_key = urllib.parse.unquote(self.kwargs['public_key']) info = wireguard.get_info() context.update(info) for client in info['my_server']['clients']: @@ -100,11 +102,12 @@ class DeleteClientView(SuccessMessageMixin, TemplateView): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) context['title'] = _('Delete Client') - context['public_key'] = self.kwargs['public_key'] + context['public_key'] = urllib.parse.unquote(self.kwargs['public_key']) return context def post(self, request, public_key): """Delete the client.""" + public_key = urllib.parse.unquote(public_key) actions.superuser_run('wireguard', ['remove-client', public_key]) messages.success(request, _('Client deleted.')) return redirect('wireguard:index') @@ -152,7 +155,7 @@ class ShowServerView(SuccessMessageMixin, TemplateView): context = super().get_context_data(**kwargs) context['title'] = _('Show Server') - public_key = self.kwargs['public_key'] + public_key = urllib.parse.unquote(self.kwargs['public_key']) info = wireguard.get_info() context.update(info) for server in info['my_client']['servers']: From 9eb546df2609c6346119a833d7fa722af584cd4e Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 16 Sep 2019 06:42:11 -0400 Subject: [PATCH 25/87] wireguard: Refactor actions file Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 124 ++++++++++++++++++++++++++++++---------------- 1 file changed, 80 insertions(+), 44 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 0a4dc5c42..76fc529ce 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -29,6 +29,10 @@ PUBLIC_KEY_HELP = 'Public key for the client' SERVER_INTERFACE = 'wg0' +KEY_FOLDER = pathlib.Path('/var/lib/freedombox/wireguard') +PRIVATE_KEY_PATH = KEY_FOLDER / 'privatekey' +PUBLIC_KEY_PATH = KEY_FOLDER / 'publickey' + def parse_arguments(): """Return parsed command line arguments as dictionary.""" @@ -58,16 +62,33 @@ def parse_arguments(): '--all-outgoing', action='store_true', help='Use this connection to send all outgoing traffic') + remove_server = subparsers.add_parser('remove-server', + help='Remove a server') + remove_server.add_argument('publickey', help=PUBLIC_KEY_HELP) + subparsers.required = True return parser.parse_args() +def _generate_key_pair(): + """Generate private/public key pair.""" + private_key = subprocess.check_output(['wg', 'genkey']) + public_key = subprocess.check_output(['wg', 'pubkey'], input=private_key) + KEY_FOLDER.mkdir(parents=True, exist_ok=True) + with PUBLIC_KEY_PATH.open(mode='wb') as public_key_file: + public_key_file.write(public_key) + + old_umask = os.umask(0o077) + try: + with PRIVATE_KEY_PATH.open(mode='wb') as private_key_file: + private_key_file.write(private_key) + + finally: + os.umask(old_umask) + + def subcommand_setup(_): """Setup WireGuard.""" - key_folder = pathlib.Path('/var/lib/freedombox/wireguard') - private_key_path = key_folder / 'privatekey' - public_key_path = key_folder / 'publickey' - # TODO: make idempotent # create interface @@ -75,28 +96,15 @@ def subcommand_setup(_): ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard'], check=True) - # generate key pair - private_key = subprocess.check_output(['wg', 'genkey']) - public_key = subprocess.check_output(['wg', 'pubkey'], input=private_key) - key_folder.mkdir(parents=True, exist_ok=True) - with public_key_path.open(mode='wb') as public_key_file: - public_key_file.write(public_key) - - old_umask = os.umask(0o077) - try: - with private_key_path.open(mode='wb') as private_key_file: - private_key_file.write(private_key) - - finally: - os.umask(old_umask) + _generate_key_pair() subprocess.run( ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', - str(private_key_path)], check=True) + str(PRIVATE_KEY_PATH)], check=True) -def subcommand_get_info(_): - """Get info for each configured interface.""" +def _get_info(): + """Return info for each configured interface.""" output = subprocess.check_output( ['wg', 'show', 'all', 'dump']).decode().strip() lines = output.split('\n') @@ -127,7 +135,12 @@ def subcommand_get_info(_): 'peers': [], } - print(json.dumps(interfaces)) + return interfaces + + +def subcommand_get_info(_): + """Print info for each configured interface.""" + print(json.dumps(_get_info())) def subcommand_add_client(arguments): @@ -144,8 +157,8 @@ def subcommand_remove_client(arguments): check=True) -def subcommand_add_server(arguments): - """Add a server.""" +def _find_next_interface(): + """Find next unused wireguard interface name.""" output = subprocess.check_output( ['wg', 'show', 'interfaces']).decode().strip() interfaces = output.split() @@ -155,32 +168,46 @@ def subcommand_add_server(arguments): interface_num += 1 new_interface_name = 'wg' + str(interface_num) + return new_interface_name + + +def _create_connection(name, interface, client_ip): + """Create a NetworkManager connection.""" + subprocess.run(['nmcli', 'con', 'add', + 'con-name', name, + 'ifname', interface, + 'type', 'wireguard'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', name, + 'connection.autoconnect', 'TRUE'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', name, + 'connection.zone', 'internal'], check=True) + + subprocess.run(['nmcli', 'con', 'modify', name, + 'ipv4.method', 'manual', + 'ipv4.addresses', client_ip + '/24'], check=True) + + with PRIVATE_KEY_PATH.open() as private_key_file: + private_key = private_key_file.read().strip() + + subprocess.run(['nmcli', 'con', 'modify', name, + 'wireguard.private-key', private_key], check=True) + + +def subcommand_add_server(arguments): + """Add a server.""" + new_interface_name = _find_next_interface() + subprocess.run( ['ip', 'link', 'add', 'dev', new_interface_name, 'type', 'wireguard'], check=True) connection_name = 'WireGuard-' + new_interface_name - subprocess.run(['nmcli', 'con', 'add', - 'con-name', connection_name, - 'ifname', new_interface_name, - 'type', 'wireguard'], check=True) - - subprocess.run(['nmcli', 'con', 'modify', connection_name, - 'connection.autoconnect', 'TRUE'], check=True) - - subprocess.run(['nmcli', 'con', 'modify', connection_name, - 'connection.zone', 'internal'], check=True) - - subprocess.run(['nmcli', 'con', 'modify', connection_name, - 'ipv4.method', 'manual', - 'ipv4.addresses', arguments.client_ip + '/24'], check=True) - - with open('/var/lib/freedombox/wireguard/privatekey') as private_key_file: - private_key = private_key_file.read().strip() - - subprocess.run(['nmcli', 'con', 'modify', connection_name, - 'wireguard.private-key', private_key], check=True) + _create_connection(connection_name, new_interface_name, + arguments.client_ip) + # XXX: Peer is lost after connection is activated. args = ['wg', 'set', new_interface_name, 'peer', arguments.public_key] if arguments.pre_shared_key: args += ['preshared-key', arguments.pre_shared_key] @@ -189,6 +216,15 @@ def subcommand_add_server(arguments): subprocess.run(args, check=True) +def subcommand_remove_server(arguments): + """Remove a server.""" + # XXX: fix this + subprocess.run( + ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey, 'remove'], + check=True) + # TODO: also delete NM connection + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() From aa66a9135c996fba90378e25567e64a475e1e0aa Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 16 Sep 2019 20:05:35 -0400 Subject: [PATCH 26/87] wireguard: Add views for editing and deleting clients and servers Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 71 +++++++++++- plinth/modules/wireguard/__init__.py | 7 +- .../wireguard/templates/wireguard.html | 8 -- .../templates/wireguard_delete_server.html | 42 ++++++++ .../templates/wireguard_edit_client.html | 37 +++++++ .../templates/wireguard_edit_server.html | 37 +++++++ .../templates/wireguard_show_client.html | 12 +++ .../templates/wireguard_show_server.html | 12 +++ plinth/modules/wireguard/urls.py | 6 ++ plinth/modules/wireguard/views.py | 101 ++++++++++++++++++ 10 files changed, 318 insertions(+), 15 deletions(-) create mode 100644 plinth/modules/wireguard/templates/wireguard_delete_server.html create mode 100644 plinth/modules/wireguard/templates/wireguard_edit_client.html create mode 100644 plinth/modules/wireguard/templates/wireguard_edit_server.html diff --git a/actions/wireguard b/actions/wireguard index 76fc529ce..1231bf1c8 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -34,6 +34,10 @@ PRIVATE_KEY_PATH = KEY_FOLDER / 'privatekey' PUBLIC_KEY_PATH = KEY_FOLDER / 'publickey' +class InterfaceNotFoundError(Exception): + """Exception raised when no matching interface is found.""" + + def parse_arguments(): """Return parsed command line arguments as dictionary.""" parser = argparse.ArgumentParser() @@ -62,6 +66,19 @@ def parse_arguments(): '--all-outgoing', action='store_true', help='Use this connection to send all outgoing traffic') + modify_server = subparsers.add_parser('modify-server', + help='Modify a server') + modify_server.add_argument('--endpoint', required=True, + help='Server endpoint') + modify_server.add_argument('--client-ip', required=True, + help='Client IP address provided by server') + modify_server.add_argument('--public-key', required=True, + help='Public key of the server') + modify_server.add_argument('--pre-shared-key', help='Pre-shared key') + modify_server.add_argument( + '--all-outgoing', action='store_true', + help='Use this connection to send all outgoing traffic') + remove_server = subparsers.add_parser('remove-server', help='Remove a server') remove_server.add_argument('publickey', help=PUBLIC_KEY_HELP) @@ -216,13 +233,57 @@ def subcommand_add_server(arguments): subprocess.run(args, check=True) +def subcommand_modify_server(arguments): + """Modify a server.""" + interfaces = _get_info() + interfaces.pop(SERVER_INTERFACE) + interface_to_modify = None + for interface in interfaces.values(): + if interface['peers']: + peer = interface['peers'][0] + if peer['public_key'] == arguments.public_key: + interface_to_modify = interface['interface_name'] + + if interface_to_modify: + args = ['wg', 'set', interface_to_modify, 'peer', arguments.public_key] + if arguments.pre_shared_key: + args += ['preshared-key', arguments.pre_shared_key] + + args += ['endpoint', arguments.endpoint] + subprocess.run(args, check=True) + + subprocess.run(['nmcli', 'con', 'modify', + 'WireGuard-' + interface_to_modify, + 'ipv4.method', 'manual', + 'ipv4.addresses', arguments.client_ip + '/24'], + check=True) + + else: + raise InterfaceNotFoundError( + 'Interface with peer %s not found' % arguments.publickey) + + def subcommand_remove_server(arguments): """Remove a server.""" - # XXX: fix this - subprocess.run( - ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey, 'remove'], - check=True) - # TODO: also delete NM connection + interfaces = _get_info() + interfaces.pop(SERVER_INTERFACE) + interface_to_remove = None + for interface in interfaces.values(): + if interface['peers']: + peer = interface['peers'][0] + if peer['public_key'] == arguments.publickey: + interface_to_remove = interface['interface_name'] + + if interface_to_remove: + subprocess.run( + ['nmcli', 'con', 'delete', 'WireGuard-' + interface_to_remove], + check=True) + subprocess.run(['ip', 'link', 'delete', interface_to_remove], + check=True) + + else: + raise InterfaceNotFoundError( + 'Interface with peer %s not found' % arguments.publickey) def main(): diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 9f830e77c..fc02e46ad 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -122,8 +122,11 @@ def get_info(): output = actions.superuser_run('wireguard', ['get-info']) info = json.loads(output) my_server_info = info.pop(SERVER_INTERFACE) - my_client_servers = [interface['peers'] and interface['peers'][0] or {} - for interface in info.values()] + my_client_servers = [] + for interface in info.values(): + if interface['peers']: + my_client_servers.append(interface['peers'][0]) + return { 'my_server': { 'public_key': my_server_info['public_key'], diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 13a2132ad..7734d7f47 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -31,7 +31,6 @@ - {% if server_peers %} {% for peer in server_peers %} @@ -42,11 +41,6 @@ - {% endfor %} @@ -76,7 +70,6 @@ - {% if client_peers %} {% for peer in client_peers %} @@ -88,7 +81,6 @@ - {% endfor %} diff --git a/plinth/modules/wireguard/templates/wireguard_delete_server.html b/plinth/modules/wireguard/templates/wireguard_delete_server.html new file mode 100644 index 000000000..1fb708300 --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_delete_server.html @@ -0,0 +1,42 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +

+ {% trans "Are you sure that you want to delete this server?" %} +

+

+ {{ public_key }} +

+ +
+ {% csrf_token %} + + + + +{% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_edit_client.html b/plinth/modules/wireguard/templates/wireguard_edit_client.html new file mode 100644 index 000000000..93da05b41 --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_edit_client.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + + + +{% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_edit_server.html b/plinth/modules/wireguard/templates/wireguard_edit_server.html new file mode 100644 index 000000000..b2f1a6e6c --- /dev/null +++ b/plinth/modules/wireguard/templates/wireguard_edit_server.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block content %} + +

{{ title }}

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + + + +{% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index e07238ca9..32718245d 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -36,4 +36,16 @@

{% trans "Data received:" %} {{ client.transfer_rx }}

{% trans "Latest handshake:" %} {{ client.latest_handshake }}

+

+ + {% trans "Edit Client" %} + + + + {% trans "Delete Client" %} + +

+ {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_server.html b/plinth/modules/wireguard/templates/wireguard_show_server.html index 9ad01eaed..95997a429 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_server.html +++ b/plinth/modules/wireguard/templates/wireguard_show_server.html @@ -32,4 +32,16 @@

{% trans "Data received:" %} {{ server.transfer_rx }}

{% trans "Latest handshake:" %} {{ server.latest_handshake }}

+

+ + {% trans "Edit Server" %} + + + + {% trans "Delete Server" %} + +

+ {% endblock %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index fa2a1f159..20c9c11d6 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -28,10 +28,16 @@ urlpatterns = [ name='add-client'), url(r'^apps/wireguard/client/(?P[^/]+)/show/$', views.ShowClientView.as_view(), name='show-client'), + url(r'^apps/wireguard/client/(?P[^/]+)/edit/$', + views.EditClientView.as_view(), name='edit-client'), url(r'^apps/wireguard/client/(?P[^/]+)/delete/$', views.DeleteClientView.as_view(), name='delete-client'), url(r'^apps/wireguard/server/add/$', views.AddServerView.as_view(), name='add-server'), url(r'^apps/wireguard/server/(?P[^/]+)/show/$', views.ShowServerView.as_view(), name='show-server'), + url(r'^apps/wireguard/server/(?P[^/]+)/edit/$', + views.EditServerView.as_view(), name='edit-server'), + url(r'^apps/wireguard/server/(?P[^/]+)/delete/$', + views.DeleteServerView.as_view(), name='delete-server'), ] diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 61e89ecfd..c919a5b88 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -94,6 +94,35 @@ class ShowClientView(SuccessMessageMixin, TemplateView): return context +class EditClientView(SuccessMessageMixin, FormView): + """View to modify a client.""" + form_class = forms.AddClientForm + template_name = 'wireguard_edit_client.html' + success_url = reverse_lazy('wireguard:index') + success_message = _('Updated client.') + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Modify Client') + return context + + def get_initial(self): + """Get initial form data.""" + initial = super().get_initial() + initial['public_key'] = urllib.parse.unquote(self.kwargs['public_key']) + return initial + + def form_valid(self, form): + """Update the client.""" + old_public_key = form.initial['public_key'] + actions.superuser_run('wireguard', ['remove-client', old_public_key]) + + public_key = form.cleaned_data.get('public_key') + actions.superuser_run('wireguard', ['add-client', public_key]) + return super().form_valid(form) + + class DeleteClientView(SuccessMessageMixin, TemplateView): """View to delete a client.""" template_name = 'wireguard_delete_client.html' @@ -163,3 +192,75 @@ class ShowServerView(SuccessMessageMixin, TemplateView): context['server'] = server return context + + +class EditServerView(SuccessMessageMixin, FormView): + """View to modify a server.""" + form_class = forms.AddServerForm + template_name = 'wireguard_edit_server.html' + success_url = reverse_lazy('wireguard:index') + success_message = _('Updated server.') + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Modify Server') + return context + + def get_initial(self): + """Get initial form data.""" + initial = super().get_initial() + public_key = urllib.parse.unquote(self.kwargs['public_key']) + info = wireguard.get_info() + for server in info['my_client']['servers']: + if server['public_key'] == public_key: + initial['endpoint'] = server['endpoint'] + initial['client_ip_address'] = '' + initial['public_key'] = server['public_key'] + pre_shared_key = server['preshared_key'] + if pre_shared_key == '(none)': + initial['pre_shared_key'] = '' + else: + initial['pre_shared_key'] = server['preshared_key'] + + initial['all_outgoing_traffic'] = False + + return initial + + def form_valid(self, form): + """Update the server.""" + endpoint = form.cleaned_data.get('endpoint') + client_ip_address = form.cleaned_data.get('client_ip_address') + public_key = form.cleaned_data.get('public_key') + pre_shared_key = form.cleaned_data.get('pre_shared_key') + all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') + args = ['modify-server', '--endpoint', endpoint, '--client-ip', + client_ip_address, '--public-key', public_key] + if pre_shared_key: + # TODO: pass pre-shared key through stdin + args += ['--pre-shared-key', pre_shared_key] + + if all_outgoing_traffic: + args.append('--all-outgoing') + + actions.superuser_run('wireguard', args) + return super().form_valid(form) + + +class DeleteServerView(SuccessMessageMixin, TemplateView): + """View to delete a server.""" + template_name = 'wireguard_delete_server.html' + + def get_context_data(self, **kwargs): + """Return additional context data for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Delete Server') + context['public_key'] = urllib.parse.unquote(self.kwargs['public_key']) + return context + + def post(self, request, public_key): + """Delete the server.""" + public_key = urllib.parse.unquote(public_key) + actions.superuser_run('wireguard', ['remove-server', public_key]) + messages.success(request, _('Server deleted.')) + return redirect('wireguard:index') From a0ea33d9b6923e5e06e08456cb2749ed06227256 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Tue, 17 Sep 2019 20:00:54 -0400 Subject: [PATCH 27/87] wireguard: Make setup idempotent Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 1231bf1c8..9770b207a 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -106,15 +106,20 @@ def _generate_key_pair(): def subcommand_setup(_): """Setup WireGuard.""" - # TODO: make idempotent + # Create interface. + try: + subprocess.run(['ip', 'link', 'show', SERVER_INTERFACE], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, + check=True) + except subprocess.CalledProcessError: + subprocess.run( + ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', + 'wireguard'], check=True) - # create interface - subprocess.run( - ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard'], - check=True) - - _generate_key_pair() + if not (PUBLIC_KEY_PATH.exists() and PRIVATE_KEY_PATH.exists()): + _generate_key_pair() + # Configure interface. subprocess.run( ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', str(PRIVATE_KEY_PATH)], check=True) From 28bc880dc5ced361b1fecb3165f1721dc79bf019 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 18 Sep 2019 06:47:20 -0400 Subject: [PATCH 28/87] wireguard: Write pre-shared key to tempfile Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/wireguard/views.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index c919a5b88..299c6025e 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,6 +18,7 @@ Views for WireGuard application. """ +import tempfile import urllib.parse from django.contrib import messages @@ -164,14 +165,19 @@ class AddServerView(SuccessMessageMixin, FormView): all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') args = ['add-server', '--endpoint', endpoint, '--client-ip', client_ip_address, '--public-key', public_key] + optional_psk_file = None if pre_shared_key: - # TODO: pass pre-shared key through stdin - args += ['--pre-shared-key', pre_shared_key] + optional_psk_file = tempfile.NamedTemporaryFile() + optional_psk_file.write(pre_shared_key.encode()) + args += ['--pre-shared-key', optional_psk_file.name] if all_outgoing_traffic: args.append('--all-outgoing') actions.superuser_run('wireguard', args) + if optional_psk_file: + optional_psk_file.close() + return super().form_valid(form) @@ -236,14 +242,19 @@ class EditServerView(SuccessMessageMixin, FormView): all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') args = ['modify-server', '--endpoint', endpoint, '--client-ip', client_ip_address, '--public-key', public_key] + optional_psk_file = None if pre_shared_key: - # TODO: pass pre-shared key through stdin - args += ['--pre-shared-key', pre_shared_key] + optional_psk_file = tempfile.NamedTemporaryFile() + optional_psk_file.write(pre_shared_key.encode()) + args += ['--pre-shared-key', optional_psk_file.name] if all_outgoing_traffic: args.append('--all-outgoing') actions.superuser_run('wireguard', args) + if optional_psk_file: + optional_psk_file.close() + return super().form_valid(form) From b0855dad91c84ab722ce8fc68886c311b292d65e Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 18 Sep 2019 20:54:05 -0400 Subject: [PATCH 29/87] wireguard: Use network API to handle connections Signed-off-by: James Valleroy [sunil: Use the new method for creating network manager client instance] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 63 ++++++++++++++++++++++++++++++++--------------- plinth/network.py | 12 +++++++++ 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 9770b207a..61125d85d 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -25,6 +25,8 @@ import os import pathlib import subprocess +from plinth import network + PUBLIC_KEY_HELP = 'Public key for the client' SERVER_INTERFACE = 'wg0' @@ -193,23 +195,34 @@ def _find_next_interface(): return new_interface_name +def _get_connection_settings(name, interface, client_ip): + """Return settings for Network Manager connection.""" + return { + 'common': { + 'name': name, + 'type': 'wireguard', + 'interface': interface, + 'zone': 'internal', + }, + 'ipv4': { + 'method': 'manual', + 'address': client_ip, + 'netmask': '', + 'gateway': '', + 'dns': '', + 'second_dns': '', + }, + } + + def _create_connection(name, interface, client_ip): """Create a NetworkManager connection.""" - subprocess.run(['nmcli', 'con', 'add', - 'con-name', name, - 'ifname', interface, - 'type', 'wireguard'], check=True) + settings = _get_connection_settings(name, interface, client_ip) + network.add_connection(settings) subprocess.run(['nmcli', 'con', 'modify', name, 'connection.autoconnect', 'TRUE'], check=True) - subprocess.run(['nmcli', 'con', 'modify', name, - 'connection.zone', 'internal'], check=True) - - subprocess.run(['nmcli', 'con', 'modify', name, - 'ipv4.method', 'manual', - 'ipv4.addresses', client_ip + '/24'], check=True) - with PRIVATE_KEY_PATH.open() as private_key_file: private_key = private_key_file.read().strip() @@ -257,15 +270,23 @@ def subcommand_modify_server(arguments): args += ['endpoint', arguments.endpoint] subprocess.run(args, check=True) - subprocess.run(['nmcli', 'con', 'modify', - 'WireGuard-' + interface_to_modify, - 'ipv4.method', 'manual', - 'ipv4.addresses', arguments.client_ip + '/24'], - check=True) + connection = network.get_connection_by_interface_name( + interface_to_modify) + + settings = _get_connection_settings('WireGuard-' + interface_to_modify, + interface_to_modify, + arguments.client_ip) + + if connection: + network.edit_connection(connection, settings) + + else: + # XXX: raise error? + network.add_connection(settings) else: raise InterfaceNotFoundError( - 'Interface with peer %s not found' % arguments.publickey) + 'Interface with peer %s not found' % arguments.public_key) def subcommand_remove_server(arguments): @@ -280,9 +301,11 @@ def subcommand_remove_server(arguments): interface_to_remove = interface['interface_name'] if interface_to_remove: - subprocess.run( - ['nmcli', 'con', 'delete', 'WireGuard-' + interface_to_remove], - check=True) + connection = network.get_connection_by_interface_name( + interface_to_remove) + if connection: + network.delete_connection(connection.get_uuid()) + subprocess.run(['ip', 'link', 'delete', interface_to_remove], check=True) diff --git a/plinth/network.py b/plinth/network.py index 7943f4fcb..b77d3061e 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -289,6 +289,18 @@ def get_active_connection(connection_uuid): raise ConnectionNotFound(connection_uuid) +def get_connection_by_interface_name(interface_name): + """Return connection with matching interface. + + Return None if a connection with the interface is not found.""" + client = get_nm_client() + for connection in client.get_connections(): + if connection.get_interface_name() == interface_name: + return connection + + return None + + def get_device_by_interface_name(interface_name): """Return a device by interface name.""" return get_nm_client().get_device_by_iface(interface_name) From eaa71f056ad217d4c7a4b758b79502ffe04c8508 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 19 Sep 2019 06:26:48 -0400 Subject: [PATCH 30/87] wireguard: Add icon Signed-off-by: James Valleroy [sunil: Fix size of SVG, add PNG image too] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- debian/copyright | 5 + static/themes/default/icons/wireguard.png | Bin 0 -> 17813 bytes static/themes/default/icons/wireguard.svg | 179 +++++++++------------- 3 files changed, 77 insertions(+), 107 deletions(-) create mode 100644 static/themes/default/icons/wireguard.png diff --git a/debian/copyright b/debian/copyright index 9c5eb3ca7..aacdc0b09 100644 --- a/debian/copyright +++ b/debian/copyright @@ -261,6 +261,11 @@ Copyright: 2007 ruli (https://thenounproject.com/2007ruli/) Comment: https://thenounproject.com/icon/1206946/ License: CC-BY-SA-3.0 +Files: static/themes/default/icons/wireguard.png + static/themes/default/icons/wireguard.svg +Copyright: 2019 WireGuard LLC +Comment: https://git.zx2c4.com/wireguard-windows/plain/ui/icon/wireguard.svg +License: Expat Files: static/themes/default/img/network-computer.svg Copyright: 2008 GNOME icon artists diff --git a/static/themes/default/icons/wireguard.png b/static/themes/default/icons/wireguard.png new file mode 100644 index 0000000000000000000000000000000000000000..7db03494baf90f7de8325eda16a8151560142aae GIT binary patch literal 17813 zcmXt=1yEJr_x8`FyOHkhkVZNM=`SG-(%mgw2?1$Dkdp51?(Xhxr4i}+AAa+`&M=@e z+2)FRcy$5b#F`fP?^k(|0Mf0KdVxO1}RO3H;-S zWEKYg9ob3#qbmR)n!bKP1bmWLz<(rilhJY0aI|pqG;uKpJUu^ncb9=#@|tl)h9q*bT?4iNj&TVN3U2xK_`7 zt0paEWUiJLmrykuwjnZIQoXi9&8xMZmXT}bKD~QV3r{$`F3-JthdD8my6U^`s5qYb zcKxy)&ZG2eAG4-`sRc|?zleQfTee%6QcpE z3V!h}245*f;PC3c-#FPK*d#SD-U0{|SHpz6f(S&ERiS+V+yEuYVA>$+FE}`Io&8nx zAJZiM;8XaYq)6Dsc_^5A0@N4bx&|>^sVg{~_K@i}nI`}b3?;4}3Fc4aSaFGR*kesq zmyoDH{aOG`9669Fj(bUEdqqra@09%;_p47Zm@+NlR~@7%CW*iZ+xTT zM!HfyFb)pm=wbjr0UxqXK~3YJ7Kq=t6eH6GB4Gq8=Qq7_b75e(ZLkgXS!<@wbY*~ZJ49np!Bk%6+ufJ++(U`ykfotIq}_gb zCdm(kQC?<8#1$Wh<%#E9G>T0l#W$?oHx7k8#>hnQJ3LtUNmqS=M+l!u1IXGb#Yhn% zw2!6IRN4~2d7MUemK$sm5e~jz>3{TF74boO8D5?Qkb~it_D*QKP}dSFniu{NS|- z>l{zVp3Fm?C0p+4nyXvBkI%_*_CFC?y>(?6mF=3pWE3BV8h;P$O7!GS;mJbNd+ULy ziV^V{HU*pLff;%Lctw;QIODOi{}#H$cT2xR0e?(fxO~eUOG<`577`&J-5$LA+iEvY zvt5kSMetF#PSQAO{CA77e|UP(aQyeuzNWbn>^5gy6jztxIoT^pS?HPyvOnK!QOyW> zkSd=C;yK|Kuv7To4I(FO<|kwLhrbRAbj@wo%*)CtNFlC&sw9_)(Wf2PWDmzu?no7BVwMDR^>(&uUzyg4zgWq{{44fNE>_SQdUF47_)M_wC5Mi%lD>4msg(JI)kK z)lD+ss&~Ezeq2=a_upx>+6-aH=h0@x+$q7Q6D3 zxUjl;NN|JA-saC=qGWiNknA^lm=uHQX_GGh5ej|yOkP}X-ugLTyDe?Q}?2jAWfkYit_WHM{@fi;2*h@&7q=_~*7tQ*6Y_x}>1_-5hijLy|_LmA0XW+GgDi#ELDRdP+Fz!Dm3lqMrcxtZT=nE;*NvzAVCz%r+2NKGiO!{dhIr(pY;(P-PAc?8P>ICQaYx z*E3?RwMN9k7$kdq+@OS`kjP#1E6O>Ygyd*d1j>m+7uAjV2+v1;7R0)pwl1nahom8x z7-f{q{leEnHd-u&)!9DVh^y3*`r=_~8%NC@0%Ks&9{B659hL}F&woy)V#cH=Hf!*G z;)gIXMQB}VTCy+)6O(}*m;NVL3`){iVWy`8)mTh`IbFpAKUP?yt|;!Hpzvea0uQB@kc(8M_36zak9BvQo3eb9KdfGVRE7FK>J3#& zSjw9HL!Ki$Yh7av4C8PGe7M9%v_L~s+al&)SBF$)j{-d8lN7`AWh`W28nHjn*M5vl z8ny=}*e=BS>>yNs=ShU4h}6fJ@cD9XzfKx;e=RdZB?W$(zjq~0frbTAv)U|9<|A(i zFE9HNFDdW>G!m0VIoSTxFRC|oT99^{=DkF~>0q#=98YZt}P&>Z^x#YH`Musu*RQ_uu0#JDG;n10+&yijdh+Bhc~~!th-uB?5j4J zy)T^#OGxF9!^Vv`&ZXTI8RrDbq^Zc*Kg z9c2yh_gManeh`HktSJmNS1{*)v+HRay<0L<%k<0ZNC_@9s`Mh+&vx@X@W$C;On1b+ zt=xcXzrfw;djG7_Tte&3b^C=_FR8$w+@*EqPcD8sZ$yfy%cwd3?L_9eiRtX|Gn)Fu zl-P{8FM7T=Tm9n(PJjPNukDXX5DwA3*^XS4!j_MYuGc>h^8#X^K;d%z*4Tbetd#=O zX~w%g_e*w4LW;xva`L1SvC4trLmHiQ*jw~ich%y=OsjUsr|+u)LjmVN!_89&`0`x_ zWwPn?QGJQMs8`MIGCp>!X!rWH-WKmLU{rQJOv`V$w( zn-Sj6+Lc|Si6J!h*~kJBn#GA0Z$$#LcT@RPlwG*X?Viw+Z%(sJHbmo5=BqpceXfG{ zw`I)w2V6GTdyn&Q(y>6kSwRsRw|g-mU+VK?^2xJ*{G8t?DI z+4?L7l@+>E);}wbeeI=UL2(~C3sw|}YTA{1eN)lg!b?SVh78r+yaJk&dHY%)o5)3V zI|MmQ%u0*5IM3nRGas~@QuQ88)(r#52geh0aby3vT$<*&+;*gAqz=E)8ciRRH>0Ef z#@3T>#c!PrXs~c+Pg*^*tPaSE?2&Qqa^!`lKllPi3X}_-K@$$wFmqHDx8}ld#AQ_a$XaJ|-%pD7Gcx zbLkLVQ2T9KM=9&@yU93Jmt)*IpL3X~{dQGZ7D*Qj_ z?aOyV9$O|TAe{!_s~+^>4$!3zN__)w$0vgq)!*)c+O)-J+GP0EqK*voC~8_w|4CEW za9rMCKJyO_tlzOfIHqjtQSugV=2z5D9)Zc`Nvq|{WOXK8SuHiP&cB`F6p48)s){s^ z#ZvnszVOGxE*@9Jz2xs`>myMp*OX#UbfF&t3qOR0B7nL+QbF?JV1Ku~pi?^QEn4_KFs*r5ft>f$SIyym zh=7d?C4FGrVCv zcy;JrlF}uCn(pKB_!X2hRrojr0+K; z5*badrPY_P;-k+U$LSfij46Ub#C##BlVb3$00#3_3xI%Zu5!pj#!Wau@ea_G4_j2X z38qq!lo7T=5gP4Mx#HW@iUAQ8#8FxT`s~;3=5D%rq6BOhrR6aBLrigCG zPO=7X71wB7t{(2J(iWIHaq_CgI!X6eqU&;;oL`%cw09z#zfU1@DwqP^KHXDmWXgty z=SWCUOJmA+M+>2zs<7`Ja77I-1~3X#6@H(4>z;^~lkA^-|Cg-(#|Fj~UmVMb&xS_% z*DqDi<1nZ)*_7Wc=PjQteLXDzEy@H^yJe+(|HOkQ8eTk_oOekRGBReP-H!$)@c{mq z2>@-YAFm}m|A1yGXwZ+z-dT8{8IT#+~Sl(jdxvY2?b%0)fnu#zQ^D> z6GOAct(>-{OebWWx_jmT+pgr4g}ktT7Mr_ z6mqjSB`=ntBuJAc(2|3!uvOCWX(`uJQ2#Zp&V42TO3D^(qkf{G#CqNH9P-#QAJ#(S zh9(8v06${>{etXHpRPD9Bwiss8=0EuQb| zFJWc$(t5P~La6bVN8nK1n)6<(WQR60e?Vv_`%uIit&vS6*0 z7C#t2w^7}Qryd>Z!Ts9$u2L2jJc3O42#rT4Uif3$krT|f)+(ta`(tomLDsvhCJTau&+JXa^yfDl*9$>Jnc+ zpRx7INQbfYr8NClsCbHHIA-5PtO7}Ue9VC9BH^_kzzEpQ&)puL-%u^E)|j`?$U~P{$H^O%V5%gH? z;)hl;XQt7it~&dbt$cL}qG??_!9LYG`=I_TSgaRtl?j=D3$yh_o&~{G7BFLKu0YV7 zu5?f-E1M@)uqo#4WJkZi4k}KFt7fblo3%2874v{CrLLIBYh@h_i@?>3b{8+acPf8A zD1N72_HvQ;{M;r{l_@l_97hi7ghpI%IP{0Bknf?Pi!QAHuNB)JA8+*BrtsZV4T+V_ zI(2xU{^z4)o>7jV^vX&}xU&rW|U!5)jHvE3JD06HHmDNB|xm-x_PPjhesG)SfFipQ zmngjZ*sf|%KKTvo>YA3!@2eloy*lQIoSkd-*bpIYgCw#NsCqBO3yF2Zr%5aEfcItn zE%$RWBWfn{?>_hc@+h_2&6E!xoRibs-)C;RHE(Y}E&UJ&*V(2!eXN5o8b$JHw3#*?CdGkJjO2?;VMI zl&XO6r{k|zNaXn7L;hY;oJ5#;?uo_Kac=w+mpe!I+wm+CfsqlTUPGWtj;vFW1|oZV zyVKQWkYc(J*kdI&c5pHv3Z|HW;-7}$BiJKIo6)Vx>3%>fT+*jo2@w=r6Jb>E+k&ixL*^&HpkE@`^@qNV zvqe4OS=ZITgM1)QnT&^c zl0pgLYqrToyOSG%L*fsQ2fkM)XE7)ge50oBhqWh7!Zr)uSu$ai%yO4XS(uQd7@&Ooba|skHU0+}o$%{yJ%_ zwSMcOp)t~`vcC!Sr)Z5)o+&^sEcZk65#fs=Mqit=HC2qmkvlkyfB4}kl_%;BYF~yx zV_g0e8-537I^7tu2n>!7A)&e{dAOspG^W>Q15IH>>;aFyF$T) zX0|*!6hcUMM0?Rbwz#Y`mc*mV3d}XJ@_E~Uq`_L!m&MDcIk<^VaWvglq@H&D=&zq2 zkc37nm?J+RfUUxmMK>JJ@d`om#Z9dHi+}iodbvSQdYC-V@rDWxRd4j^scOAl_>r*3 zV$atI%F<*db`JVXNyKxo1P|a;<6Lta&22r-Mg%jCs3}8m!`v z!v&__C=TXJqTGmxZvM_f&21M5Y47@8Ja%Dh_;&uzZ#ez?E<^Wq38TE6u+0OV`1*t< zzWD`wV(kd;Y2CETzp=@nsLGDda@Z29ZXp>%Q;)QPqJcK{6`8dvn*OKiS7(FWJ!4&$ z3Jq3M9_iJRL-ahO7U7%!`)kRn7yOiJ4Kk=xml!x-zZ5GWvA;C;iQ)rDqjtwz`cF;M z>#Pe9*2}Vjd^7`$hpr3-Do+>5jvE5w-GgEk0&7lq|; zvJ%?d)s-y_@%(|}U1S|U;zNrO3_j+L>?i3i47sJN0w~wxMoeJE@7`_moxIB7tPX&rGnwK&cs=Y$ptF>uf@VlzLrZK%)e7ESq&RSGh52`4= zQj9*%M|{ZYtgL94E+8mSr2eMjh9vPsF0z^b-y6;QtbZGEora(fN~@bl)$|<~l&vS& zflyEB^7dW_!(>~4wM*6iN{0hHG9sV6VZkDyWychsv*!Ap(`v{xLW74SYLUxcNWENB z&|JjQEsZ`s)*RcqRyq&G=dn+nOkAK7i!#AcW>@GFK?EKiJb}%D7D^VWd{yJ)uNjj9v!^61 z*5!PC{Fm3*44rYl^@ z4%xe(|J5e&uw&EZ?gbD3p1mOp3652>0KhoelduA<(VX~h2O z_nf@QT}pf=i_Y~g;^p}(s6tvS+fg)3vNDApPf)*5X0DO9v2Ov4J)%@;q}DW^F3cAv z<^?{WR>onIjjq)%SZ@ul5i7;{FDT%_BXIdUHD2x`HjtGY>g1BEbS7AHaw&^JbUqd8 z!e$+uKGV;rhR}>oYB}50APgNr4I-SB0!_T z>E=f6=B3S~iSPH7KuhtcK7Q-wO7^_4n_R){=w>KEA89Af1~k9&>?KHzk<;ytpl<)a zj954CJ@Z>02eYR3=Fh%AZ1HDKQgDa1pWzHhCRf@`$_1995}o^&S`jfGH+93~wrYvWwuu?YV>0p=#_rW^e|OK_j+u2EZyk zY0!ZIo_c2V@N2mX9QWMygsk1E-f@CjB8ma4MIM z*9#f6ao$dp%L)k@1JdeCAz0miUlx)$U;CmA?vHjv02FjHtGs6k?NCTUNQ6B#n=g}O zW%Ws;Ssw{mRy=#-LMZfv(iXA4eyOfAr$rg-iwIoQ6j%w;hd{G(1+`$$E6lz;|S&-*X@Zfk1;llV7>&9b;jRcwLxZ=(Wf`nOtP1v*K3J{ zjgmj+c>BA*kBREb$EJz%KKr#<4}m&6-JS)iOXSmm;oQ2t4k8b5y8xMlagF%vSZ@y+ z6*w*zTggz%VD#c>>9Y@qlVK&TbeyGbOeG(2Z(csl<>6;E`Yfv@G<# zM4C6hzI@3Je#&2O{L<#w%49|A_t9*cyj`N0)H|)Ql>`m&^15SIWW)E84-Eo@RVazS?Gcx3p$Nh)Ahr6!efNmxn<^mvJ z_Kx;s1B`C?o#iF8_{#0pmI|3fATUQdcYZX5r<&lqq=9(qI zZW@6dB&3vzVso}Xo*u7z%M#Hd7jr>Q>GpXbBQYbrt!;~}H{fD&HWiG`81ZI@`DhO)lCF1M!{X8gBy&c@|9Rk z&W_4-i*B+TR~0Ylm)Cu*@wJVDz8S5f{l@L(glSxiDH%CE3EPj&SBZ*X*2wdFF2YwhCJx&Z(WflhQ+OW!!c5${ zOeulgEHDy`HsEXe;7f=8vrCO;*;aYfu;XI)+C>_Km!Edt_$F&4DIq~dI2^0%jTAO$ z272;%qlP{oB8}@CsZaQBFg9l|Bg<6(KMT+hBTa%6IL^`0+Y~juDbx{I))}j-izt5j z8>u_NkTe<7CBBRUK}37tB=&XDy%fR@O&H{Yl9jH6H!90y;!IdyRqM6#-~V6=Rtor; zk<3&m!p=B4<+{9HB@@9WHUegEo?VYFr~A>fV1D8L(oR`limE{PZMg|)a1cLmnFj4; zMPL6DGwWt)8A-q?D<9_B{ox0%`I3Q;4|~q8H{{^9ra@zj^T6@@g?0a%g{G!Gctqb^ z9;`26kH2X~>Qr|6e_t<`q}3V_IV_Qh6JZI$!u-*W--KvDJU1MENc?6(ByidTs0sY- zKEj&px}d%6+kzgdpmhtiy5s7mIoFJ=lZCh%%O!0p3M%}N#0{40mgXn$_9Sy}%r3jASxp?|Twlmoke#@}~; zLDvxQ;lwGbHHI=hMHco|`X?EJ?Qw_OKy}R~X^y zHAF2&pT}^XesAu7E%4VxOcLsL5J)$;%E`Pg#XKCH)IA2cadF^k_BP7XjZuyCv1SWY z>VD<0MzlG$*%v9vn{h`z`qP2Fuq#uAWHk=1v+s+)guO0BFegyz=>Cl+n3S9uw41?J zxa)W>LF-fhe|JQ~)dHNp%4&bO07|%^Hyo1RzrYG=X>%Pcl-DFdO0aC+u)om?L?X+e z;Py|;ye?K0KTtlmUM*CZ0Ik+zA9MO_u!ZvZf`#_D`$-L@ocN!Q{_@`G{N>Hn(0F+FHxg^-UcHK#~BXy5JgZ^#ANvvWGe+6*e+R$)Yk4F#6kY82|uO z$UW`%I48eSdy{%yxOVqZ3^zJ;v!G2{!Td=Qs|DKKk~Pf?5;17MQ`PywWiA}Xy6og{dT81&Zx&_DJ9}*A(+hZen~W~= z#tQ!+$1&w2bn;*GDLs6KQ}%m?{}2)ad_yTwUaZH@%J5_LiIf_yI|76I)I#D?428Eu z3N|+&O0>G(pn}(e?sMH6eA3Z1r_!4H0jy!~u4a6^_?d}{?LeU5@OI5-bF%d=v57ZF zHFM^lwbzzB9Pz(nrrOjeLtl9a@)=wTI5`sS(l7M^dVcvhZIRz4kO!4__` zwQSb!MMo3X?aR#`&DSj+ftE=a+6&UF{K)dYj4PYcSw}rwL)E|}6aURX(KEGXU^SHI zvQ>}~>-0Al6vkqaRtPu-sp!GX-t{+B0XO2X@@;~(>S`rfhPLJzx=3JVd0(G;WI4X zO(1?eor5cw9_`hCn|zAm$C@mn;n1~#G5-jPBYQ#@*S$S<3t?=$Cd@_bUKFL2^M2_a925+6ML{6=}<|-zN z?AZk`?g#|HFVm4qUB*6Pv+xWbI;3=_dP1hjvmp52LK?aOC^b`Ix1R=_J}o%(9*cGA zg_V?KP^6%t$&7I2sCD>yN@(P3hx)!e2C?n@g7Bt-AFVIe+AMtf1sCYvwM-NMoj^m; z&()(RoK;*P+u^#)xE(_#HQjUxM)+;Z4C{nVq+q`}RcU0zL&k#z!WVQKe<={F|cFOLZ@NB1*Kv)kUnccKzkr z79jmp42Bah*_rQMZ0L1O$!NqR29@4-4OM7oPP8_GpAUDq8jR^VqWxP7rL|~4PX)9t zWLw_j!m|ai!-b07PR3ggDn~K>Oif6jN|MUw?P-tw%V_DZ6H-5+9BYQy+;+x6YEVlE zZtBDZ@IrOvbWb`=OV1uH*QpoWl|}`$>qKALE`+o7SY%SZhs$(PK&^#VnpfvWFBx}s zd0%olT+$D@<(EF(I6IyC^^%F&c}J-+PP+VK{CB(YQk>Q`kn&0r+&@)s#A&m4=SI%eO9quXG8AOnT=zzR`-?fmq#N zVQK$bRXZX+M5-`YXy{e(Hl!9;DM~sVd=Swe{(S|362@y@0`|=c&vmK8D3Zj5|EQ=4 zAD6gq8)}|j$~891d#6<1fUBU-VvT|Y5CBFeZGFM%TuxyU;rxkBHrj>{jD1bKwpC1a zwRxAq-af|X({w*wHaSwy9>F{DMbPymJwpy@FaQGxUd7go3Vz@2g&ns=q3K5>2Wmv) zky}eAudav0vbO%LEU$~R9jli|yb|R3BKEJV`j5|#sExNXuMr;)tJ#YZ1ZlAaZ(8R# zo*FDyL7;yGrVIyj${-AN`+4|3P*x*mT9t43j@!BUy62m{p}C_KW&(z`n+s(R4%k!zkjj9&Dr9Gp>hD4z_T<(g7XH$vuT| z<>$Y6iU*j-%kUbQ6vg=I8P%-W?T;vW8R=Gk9@o)>I6Za{TJf$h^T~z6Ed5uQy$mGu zz5?3h&!a#mY1uV7@LZ#+Blzn2ayz^$P^P>;h+2GFK1vMfr-wx}eM~g6?L!oOO9knO zCJWse5ryYX?PA1x6;VGu{>fLlm`b$ym~M}govW6}{AVkysyc%B69T9wU`yYQ{?w9x z4nn-W`r|xl*ra|jhVS$z$*3yenpBZGI@WoI)8a{Y3fJy$6zJ9cIcpzSZhvC4UJCNL z>5dqP&OQsgixo~R)iEk~kNaV@2^L&RFuv{g*li2|7^E@mQoh48v)EqX`s94`yUM1) z8Pw^EFQ>kVP4-FJhW(Wl9dI;B+UL3MxSqG1^VcUaG^k=*-** zx_VT2?)_YPU5t30b_c>(mTUL<;x6K-*TjF)usITf+C$}9*f{M2!Ya={!PH!>pl>ja zu<;hRJ?|TAUYLj*Aw#(yO*Ko{X0PgBiUt3$Qieav0$N;{mvTy1qn}#o|!c z-8kCJL~LkK&@t=rl0->gNQQrRKeh>7^uA~`6+c11hxD(3rL2I==^~>Ip&}sza1iCTQ{dXIiCBrYKH= zS~BS2oqc_dp z>1o!ASGDiH&+@vJR2v(eY~E5aqv#E&V2SFlC{R(-9Q@{Kp)edF|NM4#tc(PT)up+F z1lm{5p)^h}v(|;ewH)<7JV75!+Hn~!lab-&woGrcTs@rbhX&{zZ}%Q#eA-BL+*%LE z?K`~WCE~$Saa<0wP{9cK(DhX13f^@vuZ|X$i*{PCXX{RhI+Nbt`$J(!@Q|XL{VxEu z(*=Ax%3za8zgwr-vvvHN=kV?_5nr~mD4jbtT@hYcX?NbxYSwLPY7lrN22-Gx-iKm7 zdrspmIl5wu3!1OnG1fEAz8gl5E7dku$NK5@e{w4DR$Q|a(x`gd(K_K1%$;2q*jHEU zN*0gE@|Eij$Bn?Iairrh5QI@_j-H=z&V2c8!hSh+L?wQbMQx~;K>GFQA_y)mv3N)s z8!oq(v*;%*=b-b{)Q3o*t^jEpVt%AW2s&}5BZY6kG9l35!&dIFqGdz(3v6q%SB@&O z=YDc!_i}>)JvEpDRx;VS)oJ9di0)d2Ym*0aLP<&026Lw( zO_woQ8h`Tp+`Z-) z(iva`^9HYh{OnQO8UwJS6<;Ti{9XrQq*g*+Sd#rwQbC3yEchia69gj>(N!?7zT??a z4XC0&fi(0$$d%aE^!^y*AoIt-QK>T7P=fsIlU~cM;}f>P?r+ZE-hMfEI`;cxUX>@0 zije28w6lPMy;>+>6>xGGOJTO$1iKID zc>1K7wiiQ31h1qZ@sPINK2;H3qhS(R4>H2QZFU*h8%(0rl1_(w$gWQI+QNeIQz zD9BXn@Q>F)f&*SWP9|S@$MnTos_2CIyD!|NzzDZ5(bu{uT;@ED3O#`rp*ijh&M=p z4!@vn2mL>hRj1l;Gh7>b;Qt{jv$b5GZ73{6%1SB&o{1yXN*}DSS}j!|s@}dC@`{3m9C|*P~Ts zNp~Hy9gT5I)iGAKl-}6ES0JFDub!s=zB?68lP*iY-`5+Nzzoea%?49V+Xu|fA^eT= zRnGw0y@DQKtgo`48(YBw+L6 zI&BE*ph^8k<0gljRa)icGWI0Cm%ykVx$Q18X9O37Hu8s!)R51P?eL&!&qxepUO=Dg zs5?xPRqa^LPPoa$vy?qa#eF`W>AmeTq2V%l;A_0ScbVVM8|%>V_i%ETaaxogUoK}3 z2)Gt}_Bk+6oW|yAYBgu6esh9;=~?S!N`YOaa7qugPV>y)p&dtfa%(N3%pE0>+sHi|H9 zp$0py-ZPE-Z}E*%_&6|NnhD>)!WTSg#L`@#kGNSja||0hoJ@^vEoRRBl~r$eMAZGb zODZwrwUGg#_q3J5u-l!0ox$!H_y#@v(+r^y*t2k4oHaA!LPignUNeg&l#b33cYp&T zi=ul~+kle;k{5)Hzj45I|L11)^xISKZ01}rw;{kd2B-hyfM`xXB-k|cwUUhI6 zY&C|s#D9mcBU&tDDL4{U59M|9E+aJxA0>Yv~o)KMu=uVA++&k;WlC zc~SWhU#9Nr_}*3TS-KBkbmtf4aspjgI8IUFw=lxjh-cz!QwsQPA03?3#y70T+h zh9N(rM(OeFQFYNlqDNvS{IR0HKn&+zuR{)V{Y2!|l4RgTk@=#YhUL{VU7@KcaS|S! z%&DWXl*+OPyvb#tSBn*6Zr30NDGkoePbTd|GY(G&z+<2ulIbOtWq=M{p-6dnL>L}V zxaHcL?&p^<*fn9f9HtJ*F`EB`fL~d$`v|T~VD~}Nou*b$tHVoa1Q9d-cyqS1E~XZ^ zv;%9yN8|I|sYVgAZuy!8xoY>Jc-7Dvk&{6NSLTbWrZz1rxeaggsGkg$-d%EXqLUuj z0QwR0;`Fiu;DANJ?%T`%zW(gEMzxH@y5*}_3Rekt&Ee#|Gu9+8oW>TgC4_fNxyUwN z5sATgIpVRWwh}sC>b=N1DrZ5zxc>H`tIsmB5aUSp2U{HBY6~Q{nGCTHcE~ z0MYbTW(2$SDX;|_Utt3$A3$(1cdZ%yWN$>i#T~VX-w}Vsm!Mj|4isDO55`d~VjNF1 zMA5-h1g>iD^o%2n3|szOc}k1${y{*~1>BYWbP44!RPn36HkZf2#AMx|lN>4R8S8Q) z1XdF2y=C6q^+vTKyctPy!8yZreT%=!w$h$=D3bliuEqm>3$if?xXq>2dI2%&dt4yP z_lJaGpu2%-Q*+MpE`P7El6lRMj}Sx-&~PTwWWbJlGEGd|M(B8W^Y@>RWe3Gln%}(? z(i4vOLG$lWPn%N@CfhY(WI_9&i&+?YK6*Ra$9#n%`3G^1YmmSYo%p}vb6E>Xm~9NX zP4K*%$5~}}7 zRiT?B@`u`(4I;~qJNo8Kb@lK2_lA1k>5ET*ZVinq#s3aD#Q#jEAZ@~Qb1ps|+R6+0 zD%WljYP370Pv?vF0t`gSED;~du}0r)s7hLBTJF85+5AgN(zt8@6#gT{PYL~D(;FH2 z_6;7Ah2rTh?N2r;r;7{h(ZnTMKLu{XOaW1qf}#t-b7Dd0ja#!m%wGp3nMD|S2pO~_ zs?4l~=||ua^Jw|C+eZae&V=v&+B;PXr0Eu@5T?3+PWIi5n|PfDc{rnqSdAqi5#u%C z@c#uWxz;V$==1aq?MBcY+X7W_Rhn0vyGS=<+cd_DRajuuPxrG-67rJaMQxz`aa?vS zO#lkwneI@3y^HjE#d@gkCFsh)gZD)8S=9T_yur~|_13Fj$^#!^$lEWwnSpAfr7KYHTPg{P&)k6L%hjFWbP_kk2BR6;gvA4BqW@Wd3!T|~qs(s%wgDZgu^WwcGrEKC=TUU; znFUI15HoTWX1apFEXliKda0TgKJPX&8{}8MJRqS7CL?2+d~a6_o+ar{x3T5soIS*> z$4dS%*$gu0!HAxHMTz=ve-F_!4YktlY^_2@6%`aL8S|k#S>JeL{kU{F^&%y|yfQu( zF_@sc1%f+lKig(W_~D}#Heq1QQp6deVZGi1U5aS?$9Q8@3PYZLwQS}%6E4-fde%bi zoO3<|u*ecO{DuUxx%=Jl5+}~E-XSqrFH&Bp-F%G#t*D#CMkk7Ky>GjP01(gr=Qkk) z%aw}hi*tz4UG@wM-S3u>IGH0P@sb9P;);y62gvgc5WZC@JXlU`}YYoNy~FPZO| z-ub=(?a{y$d*O?ZLuV);AtVWkiJ-yY2}>u2ZXr@2i^nfo`7%QF8qOKmf(}V^MdndD zOD^K#&YN{drEe!3VSrU_`Gc1%-U|MfZUcM2!{f&Ug9tF|qfM*+dMCCfBrNk#75fHW zvG1>ksVM@IFb)(wZGbhSWF>%LfRl>w?^1!)(?1>Omg%t_!I74L+SmHHrF zg~v+fzK!xz2aQIIt1={s0aI+B&xe5a%}Vg5HPB5Lh)dX}6|vtF8Xn&m#EF)IPWCzk zhBNWaXn3mOcKjeoH-si8e|n}6~PZekh|!%`5#>#0}OUwIZr;eIPKH)*;n-+Ft)#pCNznCU^L zZ@{%XV-Ai6k%52}+rVd!xtQ$b3aA}XmefHW-CFsrmOmC-+bj1}rONN=2(0x^cQSx8 z7>L^1vq$Ww6$fB9yjjUvxLhkSz2y3s-%Abmikw%G_)9)9_?%l7#J}>su&(LR$#J18xQ+45xvtTWa}PBR)a5(x^+xXRm6WpnhZL0Q#`+vzF0 zf1zQAt=Cv)4d^+3W6L1~O}_LTIcM`DzSZ!^V2O$fEn)vM-RwDyPoS4c*!ZBxqGk=& z1pnhH-286Is=Rl~)}a!9uff_B9#q1T_Sx^1=?9rmklR8J^tr*|N%z!Tx*GnVzj0Bp$W6`= ziX&wDOUw6z9TjF=Fs#=gSe+i!i}?rfK?6A=%gB$tKGMd7kC;kBN1Hbte2YqFv!A*9 z&v=7?`PT`>_c-ogD-vJKg&$WUCOSFC1|N(T(wnBCB;VwL4)To(_arr}gxK94wy%~y zXd3<-idRr@$K;+4_@zao-~UsAdYI4Hd-VO3Kjyb8;BW7IH-3V7)!A5saiR}T3Od*o z>e3n|%r?E0M5g@_RLN;#s*jzH&Gn5LoZBGX-SUrB=Z1muBu?7OJJ=ALxd?(5IeR@` zDjg_*9`Cl%kVBs0MIx7OckR-ZZ)Z$?NW0KLLtoXaWnvZ!67Al&tt6=5r9j>JO4``) zeY&x&==sSI^@S$u-;88By`6_{O0FXI`*{e^`8wN^qkj#@xI|h1hMkin>ejV?q+TsU z*)&b(nJ%8z=^7$Vp5^7B{LRBdfYPw(P=R`gsWXRkaGXzOcmGjva_)p3i3p~%IWd~rJV}2cuxRRFs-D6XRzl9$oq|$ z8NKLZBe{IC0?qJQH>$J}6lnJSPAE0;LPKK1~7@ z+F09|vDcdcyNx5ZKq$VV(uH06lSb8h<_fCjgQnc!!>FN zBN!B`M?ExLL+7Fqz%g&an-TiiGpgq z7Yi?!EGtCc6c=<-yW0X=Ny$*fU^sE1`gS6keO+_-D)u@tpqB&Em(_S?<~uh-8okWt zaTu{5T{W6PPac4~fBk;}+)}P24^DP)Q=I|KkEL1-(ByJTsQg`HaZGm~yh%yB-1je9 z4C$UO8tRo`pABwk1FIQ&;D|8`b>F(KNRs4$q+}Vs5Di;U&^pxhDpeU|=QAl!kT+@S z^M|{MqZ+Gh`Ts{{Ps`W|#!GnaG1o^1AP`kaR@BAGzd0`S7CLE0YBMCJ`bzrAl?E#J z5uTAd;aLOX2gjmEVfAnfho;{;SghcG(KWYGZ}Q?>6Rdpfj33ONRx;;+J6%Y)SPSbV z@3q$Kpd9%)7JwVAGghAkx|M`iJ2B_htcD8qRh;;Elz($#z*$_Mtw{A%YP2WgdaahR z#QnQHH5SrNDNzk(gE8ZLjmeLIT0~g^w?Jc4)=MZw=2~ue9le{5>lO?+5lKJ&=~D=| z_Yc+kj}qUmlg_gR1In^I{Ibbu^vgV)%`RXVAH<+x8s+)lKy(*Ts^gZF90D;_+(NJE zg5nyn4*dDC@r4(83UkOBhBX;%gNxZVZeui9$U3FKp<}h8Q_Rf(fD9r0MFekr{5Qx# zxcNTu4w8}eCH62~47~Jb-J!;k_uO0yalzc;cE-566Hf&q=LY7Aol92B7uhL^TVTb$ z2U`2)HON7KebVxj6vR!t4-4QyiLrH#NJ0I)=-jSE_a)Xn^8IzsaqRk*tr9}l!r(7jTZ;XqM;8KfSma6m=N8Q z=yP4ZjtaE-t0L^5DvwVjgN$TyI)BmVepA-}s(u~0H8Au?1_4*tPu@E}Xfun$MRLIx-lvUcz-u!Xc4^XPUq^!b*Zu~V5=h{(?;;ITdF zbF5+Yc8h2hJyAL2S752#>S_}%0iWF_OMHy_<~zo<;o-r0_@SYjTTasm`BN!7bie%n z?vt5_B$3~eW=cUC!^{3SgCq6Qmkb%wms>s3LxQh>o^V`TW0fnzsWkakj-)dLiVL^+ zDLzi@jTMj9k1#3bMKW>pyAMTfytvaO#`i&aPfQZR@~jKlAVT~)%@SnT2972EUjWeo zF8&j|>euJoh9Nf>+Dn&^c=`!$xpZDdAG54qWQg0bxq_ zU#5ZrVyx22;V6@Qe(5u5=NwI{*o>3Q(l`1~g>k=B6wqO&Op81qlFX0DuMnl#sZC zAV4Ms5x0QCmoOemZwffpzoK;ZgFQ!)S^k2Rl-;`#0J0GbbwEKuZ92Kj`NYywtK z36nu6(pVss0n)%ComC)BVK(1?Pp8Y}`Ojd7L;epQ_Qb^Q_uOd!0000 - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + id="metadata944">image/svg+xml \ No newline at end of file From 0bef87579f2c1940d8534aa1f2f4f13236927097 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 22 Sep 2019 07:37:41 -0400 Subject: [PATCH 31/87] wireguard: Replace nmcli use with libnm Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- actions/wireguard | 57 ++++++++++++++++++----------------------------- plinth/network.py | 18 +++++++++++++++ 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 61125d85d..6465da242 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -195,8 +195,12 @@ def _find_next_interface(): return new_interface_name -def _get_connection_settings(name, interface, client_ip): +def _get_connection_settings(name, interface, endpoint, client_ip, public_key, + pre_shared_key): """Return settings for Network Manager connection.""" + with PRIVATE_KEY_PATH.open() as private_key_file: + private_key = private_key_file.read().strip() + return { 'common': { 'name': name, @@ -212,24 +216,15 @@ def _get_connection_settings(name, interface, client_ip): 'dns': '', 'second_dns': '', }, + 'wireguard': { + 'private_key': private_key, + 'peer_endpoint': endpoint, + 'peer_public_key': public_key, + 'preshared_key': pre_shared_key, + }, } -def _create_connection(name, interface, client_ip): - """Create a NetworkManager connection.""" - settings = _get_connection_settings(name, interface, client_ip) - network.add_connection(settings) - - subprocess.run(['nmcli', 'con', 'modify', name, - 'connection.autoconnect', 'TRUE'], check=True) - - with PRIVATE_KEY_PATH.open() as private_key_file: - private_key = private_key_file.read().strip() - - subprocess.run(['nmcli', 'con', 'modify', name, - 'wireguard.private-key', private_key], check=True) - - def subcommand_add_server(arguments): """Add a server.""" new_interface_name = _find_next_interface() @@ -239,16 +234,13 @@ def subcommand_add_server(arguments): check=True) connection_name = 'WireGuard-' + new_interface_name - _create_connection(connection_name, new_interface_name, - arguments.client_ip) - - # XXX: Peer is lost after connection is activated. - args = ['wg', 'set', new_interface_name, 'peer', arguments.public_key] - if arguments.pre_shared_key: - args += ['preshared-key', arguments.pre_shared_key] - - args += ['endpoint', arguments.endpoint] - subprocess.run(args, check=True) + settings = _get_connection_settings(connection_name, + new_interface_name, + arguments.endpoint, + arguments.client_ip, + arguments.public_key, + arguments.pre_shared_key) + network.add_connection(settings) def subcommand_modify_server(arguments): @@ -263,19 +255,14 @@ def subcommand_modify_server(arguments): interface_to_modify = interface['interface_name'] if interface_to_modify: - args = ['wg', 'set', interface_to_modify, 'peer', arguments.public_key] - if arguments.pre_shared_key: - args += ['preshared-key', arguments.pre_shared_key] - - args += ['endpoint', arguments.endpoint] - subprocess.run(args, check=True) - connection = network.get_connection_by_interface_name( interface_to_modify) - settings = _get_connection_settings('WireGuard-' + interface_to_modify, interface_to_modify, - arguments.client_ip) + arguments.endpoint, + arguments.client_ip, + arguments.public_key, + arguments.pre_shared_key) if connection: network.edit_connection(connection, settings) diff --git a/plinth/network.py b/plinth/network.py index b77d3061e..4a3f62400 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -468,6 +468,21 @@ def _update_wireless_settings(connection, wireless): return connection +def _update_wireguard_settings(connection, wireguard): + """Create/edit WireGuard settings for network manager connections.""" + settings = nm.SettingWireGuard.new() + connection.add_setting(settings) + + settings.set_property(nm.SETTING_WIREGUARD_PRIVATE_KEY, + wireguard['private_key']) + # XXX: not working + peer = nm.WireGuardPeer.new() + peer.set_endpoint(wireguard['peer_endpoint'], False) + peer.set_public_key(wireguard['peer_public_key'], False) + peer.set_preshared_key(wireguard['preshared_key'], False) + settings.append_peer(peer) + + def _update_settings(connection, connection_uuid, settings): """Create/edit wifi settings for network manager connections.""" connection = _update_common_settings(connection, connection_uuid, @@ -484,6 +499,9 @@ def _update_settings(connection, connection_uuid, settings): if 'wireless' in settings and settings['wireless']: _update_wireless_settings(connection, settings['wireless']) + if 'wireguard' in settings and settings['wireguard']: + _update_wireguard_settings(connection, settings['wireguard']) + return connection From 6a2942a9c4f3e0f87a75ed52d5ed1cde3c7a7a50 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:31:44 -0700 Subject: [PATCH 32/87] wireguard: Show large buttons in show client/server pages - To be consistent with other such pages. - Larger buttons are more accessible, since they are the only operations on the page. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/templates/wireguard_show_client.html | 4 ++-- plinth/modules/wireguard/templates/wireguard_show_server.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 32718245d..4d2abfe5f 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -37,11 +37,11 @@

{% trans "Latest handshake:" %} {{ client.latest_handshake }}

- {% trans "Edit Client" %} - {% trans "Delete Client" %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_server.html b/plinth/modules/wireguard/templates/wireguard_show_server.html index 95997a429..66f7a80b1 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_server.html +++ b/plinth/modules/wireguard/templates/wireguard_show_server.html @@ -33,11 +33,11 @@

{% trans "Latest handshake:" %} {{ server.latest_handshake }}

- {% trans "Edit Server" %} - {% trans "Delete Server" %} From fe182a0faac17f1a542f0edb6b2bd490d3a46592 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:39:24 -0700 Subject: [PATCH 33/87] wireguard: Cosmetic fixes by yapf and isort Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/wireguard | 21 +++++++++++---------- plinth/modules/wireguard/__init__.py | 1 - 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 6465da242..871dd98a9 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -114,23 +114,24 @@ def subcommand_setup(_): stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True) except subprocess.CalledProcessError: - subprocess.run( - ['ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', - 'wireguard'], check=True) + subprocess.run([ + 'ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard' + ], check=True) if not (PUBLIC_KEY_PATH.exists() and PRIVATE_KEY_PATH.exists()): _generate_key_pair() # Configure interface. - subprocess.run( - ['wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', - str(PRIVATE_KEY_PATH)], check=True) + subprocess.run([ + 'wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', + str(PRIVATE_KEY_PATH) + ], check=True) def _get_info(): """Return info for each configured interface.""" - output = subprocess.check_output( - ['wg', 'show', 'all', 'dump']).decode().strip() + output = subprocess.check_output(['wg', 'show', 'all', + 'dump']).decode().strip() lines = output.split('\n') interfaces = {} for line in lines: @@ -183,8 +184,8 @@ def subcommand_remove_client(arguments): def _find_next_interface(): """Find next unused wireguard interface name.""" - output = subprocess.check_output( - ['wg', 'show', 'interfaces']).decode().strip() + output = subprocess.check_output(['wg', 'show', + 'interfaces']).decode().strip() interfaces = output.split() interface_num = 1 new_interface_name = 'wg1' diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index fc02e46ad..3fcff2b85 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -31,7 +31,6 @@ from plinth.utils import format_lazy from .manifest import clients # noqa, pylint: disable=unused-import - version = 1 managed_packages = ['wireguard'] From ad53848983f5c423681348229741ad6f7d8e138e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:42:02 -0700 Subject: [PATCH 34/87] wireguard: Don't error out when wg0 server is not setup Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/wireguard | 7 +++++-- plinth/modules/wireguard/__init__.py | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 871dd98a9..19085de33 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -135,6 +135,9 @@ def _get_info(): lines = output.split('\n') interfaces = {} for line in lines: + if not line: + continue + fields = line.split() interface_name = fields[0] if interface_name in interfaces: @@ -247,7 +250,7 @@ def subcommand_add_server(arguments): def subcommand_modify_server(arguments): """Modify a server.""" interfaces = _get_info() - interfaces.pop(SERVER_INTERFACE) + interfaces.pop(SERVER_INTERFACE, None) interface_to_modify = None for interface in interfaces.values(): if interface['peers']: @@ -280,7 +283,7 @@ def subcommand_modify_server(arguments): def subcommand_remove_server(arguments): """Remove a server.""" interfaces = _get_info() - interfaces.pop(SERVER_INTERFACE) + interfaces.pop(SERVER_INTERFACE, None) interface_to_remove = None for interface in interfaces.values(): if interface['peers']: diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 3fcff2b85..21f24aa80 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -120,7 +120,7 @@ def get_info(): """Return server and clients info.""" output = actions.superuser_run('wireguard', ['get-info']) info = json.loads(output) - my_server_info = info.pop(SERVER_INTERFACE) + my_server_info = info.pop(SERVER_INTERFACE, {}) my_client_servers = [] for interface in info.values(): if interface['peers']: @@ -128,8 +128,8 @@ def get_info(): return { 'my_server': { - 'public_key': my_server_info['public_key'], - 'clients': my_server_info['peers'], + 'public_key': my_server_info.get('public_key'), + 'clients': my_server_info.get('peers'), }, 'my_client': { 'servers': my_client_servers, From 9242a9404febd02902209d282aa5afa1940fb430 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:45:24 -0700 Subject: [PATCH 35/87] wireguard: Add ability to set private key in client addition Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/wireguard | 31 ++++++++++++---------- plinth/modules/wireguard/forms.py | 5 ++++ plinth/modules/wireguard/views.py | 43 ++++++++++++++++++------------- 3 files changed, 47 insertions(+), 32 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 19085de33..7221ae907 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -24,6 +24,7 @@ import json import os import pathlib import subprocess +import sys from plinth import network @@ -63,7 +64,6 @@ def parse_arguments(): help='Client IP address provided by server') add_server.add_argument('--public-key', required=True, help='Public key of the server') - add_server.add_argument('--pre-shared-key', help='Pre-shared key') add_server.add_argument( '--all-outgoing', action='store_true', help='Use this connection to send all outgoing traffic') @@ -200,10 +200,11 @@ def _find_next_interface(): def _get_connection_settings(name, interface, endpoint, client_ip, public_key, - pre_shared_key): + client_private_key, pre_shared_key): """Return settings for Network Manager connection.""" - with PRIVATE_KEY_PATH.open() as private_key_file: - private_key = private_key_file.read().strip() + if not client_private_key: + with PRIVATE_KEY_PATH.open() as private_key_file: + client_private_key = private_key_file.read().strip() return { 'common': { @@ -221,7 +222,7 @@ def _get_connection_settings(name, interface, endpoint, client_ip, public_key, 'second_dns': '', }, 'wireguard': { - 'private_key': private_key, + 'private_key': client_private_key, 'peer_endpoint': endpoint, 'peer_public_key': public_key, 'preshared_key': pre_shared_key, @@ -231,6 +232,7 @@ def _get_connection_settings(name, interface, endpoint, client_ip, public_key, def subcommand_add_server(arguments): """Add a server.""" + secret_args = json.loads(sys.stdin.read() or '{}') new_interface_name = _find_next_interface() subprocess.run( @@ -238,17 +240,19 @@ def subcommand_add_server(arguments): check=True) connection_name = 'WireGuard-' + new_interface_name - settings = _get_connection_settings(connection_name, - new_interface_name, + settings = _get_connection_settings(connection_name, new_interface_name, arguments.endpoint, arguments.client_ip, arguments.public_key, - arguments.pre_shared_key) + secret_args.get('client_private_key'), + secret_args.get('pre_shared_key')) network.add_connection(settings) def subcommand_modify_server(arguments): """Modify a server.""" + secret_args = json.loads(sys.stdin.read() or '{}') + interfaces = _get_info() interfaces.pop(SERVER_INTERFACE, None) interface_to_modify = None @@ -261,12 +265,11 @@ def subcommand_modify_server(arguments): if interface_to_modify: connection = network.get_connection_by_interface_name( interface_to_modify) - settings = _get_connection_settings('WireGuard-' + interface_to_modify, - interface_to_modify, - arguments.endpoint, - arguments.client_ip, - arguments.public_key, - arguments.pre_shared_key) + settings = _get_connection_settings( + 'WireGuard-' + interface_to_modify, interface_to_modify, + arguments.endpoint, arguments.client_ip, arguments.public_key, + secret_args.get('client_private_key'), + secret_args.get('pre_shared_key')) if connection: network.edit_connection(connection, settings) diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index 2fe72d2d4..bb4cc0978 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -43,6 +43,11 @@ class AddServerForm(forms.Form): label=_('Public key of the server'), strip=True, help_text=_('Public key of the server.')) + client_private_key = forms.CharField( + label=_('Private key of the client'), strip=True, + help_text=_('Optional. A new key is generated if left blank.'), + required=False) + pre_shared_key = forms.CharField( label=_('Pre-shared key'), strip=True, required=False, help_text=_('Optional: a shared secret key provided by the server to ' diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 299c6025e..824b27a93 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,6 +18,7 @@ Views for WireGuard application. """ +import json import tempfile import urllib.parse @@ -161,22 +162,25 @@ class AddServerView(SuccessMessageMixin, FormView): endpoint = form.cleaned_data.get('endpoint') client_ip_address = form.cleaned_data.get('client_ip_address') public_key = form.cleaned_data.get('public_key') + client_private_key = form.cleaned_data.get('client_private_key') pre_shared_key = form.cleaned_data.get('pre_shared_key') all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') - args = ['add-server', '--endpoint', endpoint, '--client-ip', - client_ip_address, '--public-key', public_key] - optional_psk_file = None + args = [ + 'add-server', '--endpoint', endpoint, '--client-ip', + client_ip_address, '--public-key', public_key + ] + secret_args = {} + if client_private_key: + secret_args['client_private_key'] = client_private_key + if pre_shared_key: - optional_psk_file = tempfile.NamedTemporaryFile() - optional_psk_file.write(pre_shared_key.encode()) - args += ['--pre-shared-key', optional_psk_file.name] + secret_args['pre_shared_key'] = pre_shared_key if all_outgoing_traffic: args.append('--all-outgoing') - actions.superuser_run('wireguard', args) - if optional_psk_file: - optional_psk_file.close() + actions.superuser_run('wireguard', args, + input=json.dumps(secret_args).encode()) return super().form_valid(form) @@ -238,22 +242,25 @@ class EditServerView(SuccessMessageMixin, FormView): endpoint = form.cleaned_data.get('endpoint') client_ip_address = form.cleaned_data.get('client_ip_address') public_key = form.cleaned_data.get('public_key') + client_private_key = form.client_data.get('client_private_key') pre_shared_key = form.cleaned_data.get('pre_shared_key') all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') - args = ['modify-server', '--endpoint', endpoint, '--client-ip', - client_ip_address, '--public-key', public_key] - optional_psk_file = None + args = [ + 'modify-server', '--endpoint', endpoint, '--client-ip', + client_ip_address, '--public-key', public_key + ] + secret_args = {} + if client_private_key: + secret_args['client_private_key'] = client_private_key + if pre_shared_key: - optional_psk_file = tempfile.NamedTemporaryFile() - optional_psk_file.write(pre_shared_key.encode()) - args += ['--pre-shared-key', optional_psk_file.name] + secret_args['pre_shared_key'] = pre_shared_key if all_outgoing_traffic: args.append('--all-outgoing') - actions.superuser_run('wireguard', args) - if optional_psk_file: - optional_psk_file.close() + actions.superuser_run('wireguard', args, + input=json.dumps(secret_args).encode()) return super().form_valid(form) From 39fade1095df1830440479c91afc3b053650a264 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:46:10 -0700 Subject: [PATCH 36/87] wireguard: Accept all IPs on server in a client setup - Without this, all IPs on the server will be rejected and communication will not be possible. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/network.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plinth/network.py b/plinth/network.py index 4a3f62400..0a954f8e9 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -475,11 +475,12 @@ def _update_wireguard_settings(connection, wireguard): settings.set_property(nm.SETTING_WIREGUARD_PRIVATE_KEY, wireguard['private_key']) - # XXX: not working peer = nm.WireGuardPeer.new() peer.set_endpoint(wireguard['peer_endpoint'], False) peer.set_public_key(wireguard['peer_public_key'], False) peer.set_preshared_key(wireguard['preshared_key'], False) + peer.append_allowed_ip('0.0.0.0/0', False) + peer.append_allowed_ip('::/0', False) settings.append_peer(peer) From b96c5e5433ef55df716cb9dc76a0cdd22adace0e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 30 Oct 2019 14:47:54 -0700 Subject: [PATCH 37/87] wireguard: Update descriptions in form labels Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/forms.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index bb4cc0978..1c4059c1a 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -37,7 +37,8 @@ class AddServerForm(forms.Form): client_ip_address = forms.CharField( label=_('Client IP address provided by server'), strip=True, - help_text=_('Client IP address provided by server.')) + help_text=_('IP address assigned to the client on the VPN after ' + 'connecting to the endpoint.')) public_key = forms.CharField( label=_('Public key of the server'), strip=True, @@ -50,7 +51,7 @@ class AddServerForm(forms.Form): pre_shared_key = forms.CharField( label=_('Pre-shared key'), strip=True, required=False, - help_text=_('Optional: a shared secret key provided by the server to ' + help_text=_('Optional. A shared secret key provided by the server to ' 'add an additional layer of encryption.')) all_outgoing_traffic = forms.BooleanField( From 71c7ab4a9d87126a8de0434c08857f76f06addf5 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 1 Nov 2019 15:53:56 -0700 Subject: [PATCH 38/87] wireguard: Only use network manager for connections to servers - Don't create network link. This don't persist across reboots and it is the job of Network Manager. - Move NM settings code to regular plinth process instead of superuser. Permission for managing NM connections from the service daemon is granted by PolKit. - Use interface name to identify the connection as it seems to be simply to do so than the public key. Public key is not easy to retrieve from NM connection. - Merge code for adding and editing the connection to avoid repetition. - Add icon to the edit button. - Throw 404 error when incorrect client is specified. - Fix issue with storing preshared key. - Show formatting date in case of last connected time. - Show formatted sizes for data transmitted. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/wireguard | 137 ------------------ plinth/modules/wireguard/__init__.py | 76 +++++++++- plinth/modules/wireguard/forms.py | 43 ++++-- .../wireguard/templates/wireguard.html | 12 +- .../templates/wireguard_delete_server.html | 15 +- .../templates/wireguard_show_client.html | 4 +- .../templates/wireguard_show_server.html | 40 +++-- plinth/modules/wireguard/urls.py | 6 +- plinth/modules/wireguard/utils.py | 45 ++++++ plinth/modules/wireguard/views.py | 119 ++++++--------- plinth/network.py | 14 +- 11 files changed, 258 insertions(+), 253 deletions(-) create mode 100644 plinth/modules/wireguard/utils.py diff --git a/actions/wireguard b/actions/wireguard index 7221ae907..3856f795e 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -24,9 +24,6 @@ import json import os import pathlib import subprocess -import sys - -from plinth import network PUBLIC_KEY_HELP = 'Public key for the client' @@ -57,17 +54,6 @@ def parse_arguments(): help='Remove a client') remove_client.add_argument('publickey', help=PUBLIC_KEY_HELP) - add_server = subparsers.add_parser('add-server', help='Add a server') - add_server.add_argument('--endpoint', required=True, - help='Server endpoint') - add_server.add_argument('--client-ip', required=True, - help='Client IP address provided by server') - add_server.add_argument('--public-key', required=True, - help='Public key of the server') - add_server.add_argument( - '--all-outgoing', action='store_true', - help='Use this connection to send all outgoing traffic') - modify_server = subparsers.add_parser('modify-server', help='Modify a server') modify_server.add_argument('--endpoint', required=True, @@ -185,129 +171,6 @@ def subcommand_remove_client(arguments): check=True) -def _find_next_interface(): - """Find next unused wireguard interface name.""" - output = subprocess.check_output(['wg', 'show', - 'interfaces']).decode().strip() - interfaces = output.split() - interface_num = 1 - new_interface_name = 'wg1' - while new_interface_name in interfaces: - interface_num += 1 - new_interface_name = 'wg' + str(interface_num) - - return new_interface_name - - -def _get_connection_settings(name, interface, endpoint, client_ip, public_key, - client_private_key, pre_shared_key): - """Return settings for Network Manager connection.""" - if not client_private_key: - with PRIVATE_KEY_PATH.open() as private_key_file: - client_private_key = private_key_file.read().strip() - - return { - 'common': { - 'name': name, - 'type': 'wireguard', - 'interface': interface, - 'zone': 'internal', - }, - 'ipv4': { - 'method': 'manual', - 'address': client_ip, - 'netmask': '', - 'gateway': '', - 'dns': '', - 'second_dns': '', - }, - 'wireguard': { - 'private_key': client_private_key, - 'peer_endpoint': endpoint, - 'peer_public_key': public_key, - 'preshared_key': pre_shared_key, - }, - } - - -def subcommand_add_server(arguments): - """Add a server.""" - secret_args = json.loads(sys.stdin.read() or '{}') - new_interface_name = _find_next_interface() - - subprocess.run( - ['ip', 'link', 'add', 'dev', new_interface_name, 'type', 'wireguard'], - check=True) - - connection_name = 'WireGuard-' + new_interface_name - settings = _get_connection_settings(connection_name, new_interface_name, - arguments.endpoint, - arguments.client_ip, - arguments.public_key, - secret_args.get('client_private_key'), - secret_args.get('pre_shared_key')) - network.add_connection(settings) - - -def subcommand_modify_server(arguments): - """Modify a server.""" - secret_args = json.loads(sys.stdin.read() or '{}') - - interfaces = _get_info() - interfaces.pop(SERVER_INTERFACE, None) - interface_to_modify = None - for interface in interfaces.values(): - if interface['peers']: - peer = interface['peers'][0] - if peer['public_key'] == arguments.public_key: - interface_to_modify = interface['interface_name'] - - if interface_to_modify: - connection = network.get_connection_by_interface_name( - interface_to_modify) - settings = _get_connection_settings( - 'WireGuard-' + interface_to_modify, interface_to_modify, - arguments.endpoint, arguments.client_ip, arguments.public_key, - secret_args.get('client_private_key'), - secret_args.get('pre_shared_key')) - - if connection: - network.edit_connection(connection, settings) - - else: - # XXX: raise error? - network.add_connection(settings) - - else: - raise InterfaceNotFoundError( - 'Interface with peer %s not found' % arguments.public_key) - - -def subcommand_remove_server(arguments): - """Remove a server.""" - interfaces = _get_info() - interfaces.pop(SERVER_INTERFACE, None) - interface_to_remove = None - for interface in interfaces.values(): - if interface['peers']: - peer = interface['peers'][0] - if peer['public_key'] == arguments.publickey: - interface_to_remove = interface['interface_name'] - - if interface_to_remove: - connection = network.get_connection_by_interface_name( - interface_to_remove) - if connection: - network.delete_connection(connection.get_uuid()) - - subprocess.run(['ip', 'link', 'delete', interface_to_remove], - check=True) - - else: - raise InterfaceNotFoundError( - 'Interface with peer %s not found' % arguments.publickey) - - def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 21f24aa80..7cdb630e0 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -18,6 +18,7 @@ FreedomBox app for wireguard. """ +import datetime import json from django.urls import reverse_lazy @@ -27,10 +28,12 @@ from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.modules.firewall.components import Firewall -from plinth.utils import format_lazy +from plinth.utils import format_lazy, import_from_gi from .manifest import clients # noqa, pylint: disable=unused-import +nm = import_from_gi('NM', '1.0') + version = 1 managed_packages = ['wireguard'] @@ -116,15 +119,74 @@ def get_public_key(): return public_key +def get_nm_info(): + """Get information from network manager.""" + client = nm.Client.new(None) + + connections = {} + for connection in client.get_connections(): + if connection.get_connection_type() != 'wireguard': + continue + + settings = connection.get_setting_by_name('wireguard') + secrets = connection.get_secrets('wireguard') + connection.update_secrets('wireguard', secrets) + + info = {} + info['interface'] = connection.get_interface_name() + info['private_key'] = settings.get_private_key() + info['listen_port'] = settings.get_listen_port() + info['fwmark'] = settings.get_fwmark() + info['mtu'] = settings.get_mtu() + info['default_route'] = settings.get_ip4_auto_default_route() + info['peers'] = [] + for peer_index in range(settings.get_peers_len()): + peer = settings.get_peer(peer_index) + peer_info = { + 'endpoint': peer.get_endpoint(), + 'public_key': peer.get_public_key(), + 'preshared_key': peer.get_preshared_key(), + 'persistent_keepalive': peer.get_persistent_keepalive(), + 'allowed_ips': [] + } + for index in range(peer.get_allowed_ips_len()): + allowed_ip = peer.get_allowed_ip(index, None) + peer_info['allowed_ips'].append(allowed_ip) + + info['peers'].append(peer_info) + + settings_ipv4 = connection.get_setting_ip4_config() + if settings_ipv4 and settings_ipv4.get_num_addresses(): + info['ip_address'] = settings_ipv4.get_address(0).get_address() + + connections[info['interface']] = info + + return connections + + def get_info(): """Return server and clients info.""" output = actions.superuser_run('wireguard', ['get-info']) - info = json.loads(output) - my_server_info = info.pop(SERVER_INTERFACE, {}) - my_client_servers = [] - for interface in info.values(): - if interface['peers']: - my_client_servers.append(interface['peers'][0]) + status = json.loads(output) + + nm_info = get_nm_info() + + my_server_info = status.pop(SERVER_INTERFACE, {}) + my_client_servers = {} + + for interface, info in nm_info.items(): + my_client_servers[interface] = info + + if interface not in status: + continue + + for info_peer in info['peers']: + for status_peer in status[interface]['peers']: + if info_peer['public_key'] == status_peer['public_key']: + info_peer['status'] = status_peer + status_peer['latest_handshake'] = \ + datetime.datetime.fromtimestamp( + int(status_peer['latest_handshake'])) return { 'my_server': { diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index 1c4059c1a..9dc7ef977 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -31,30 +31,55 @@ class AddClientForm(forms.Form): class AddServerForm(forms.Form): """Form to add server.""" - endpoint = forms.CharField( + peer_endpoint = forms.CharField( label=_('Endpoint'), strip=True, help_text=_('Server endpoint with the form "ip:port".')) - client_ip_address = forms.CharField( + peer_public_key = forms.CharField( + label=_('Public key of the server'), strip=True, + help_text=_('Public key of the server.')) + + ip_address = forms.CharField( label=_('Client IP address provided by server'), strip=True, help_text=_('IP address assigned to the client on the VPN after ' 'connecting to the endpoint.')) - public_key = forms.CharField( - label=_('Public key of the server'), strip=True, - help_text=_('Public key of the server.')) - - client_private_key = forms.CharField( + private_key = forms.CharField( label=_('Private key of the client'), strip=True, help_text=_('Optional. A new key is generated if left blank.'), required=False) - pre_shared_key = forms.CharField( + preshared_key = forms.CharField( label=_('Pre-shared key'), strip=True, required=False, help_text=_('Optional. A shared secret key provided by the server to ' 'add an additional layer of encryption.')) - all_outgoing_traffic = forms.BooleanField( + default_route = forms.BooleanField( label=_('Use this connection to send all outgoing traffic'), required=False, help_text=_('Use this connection to send all outgoing traffic.')) + + def get_settings(self): + """Return NM settings dict from cleaned data.""" + settings = { + 'common': { + 'type': 'wireguard', + 'zone': 'internal', + }, + 'ipv4': { + 'method': 'manual', + 'address': self.cleaned_data['ip_address'], + 'netmask': '', + 'gateway': '', + 'dns': '', + 'second_dns': '', + }, + 'wireguard': { + 'peer_endpoint': self.cleaned_data['peer_endpoint'], + 'peer_public_key': self.cleaned_data['peer_public_key'], + 'private_key': self.cleaned_data['private_key'], + 'preshared_key': self.cleaned_data['preshared_key'], + 'default_route': self.cleaned_data['default_route'], + } + } + return settings diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 7734d7f47..753836e44 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -43,7 +43,6 @@

{% endfor %} - {% else %} {% if client_peers %} - {% for peer in client_peers %} + {% for interface, server in client_peers.items %} - + - + {% endfor %} - {% else %} + - {% if server_peers %} - {% for peer in server_peers %} - - - - + {% if server.peers %} + {% for peer in server.peers.values %} + {% if peer.public_key %} + + + + + + {% endif %} {% endfor %} {% else %} @@ -54,6 +58,13 @@ {% endif %}
- + {{ peer.public_key }} {{ peer.latest_handshake }} + href="{% url 'wireguard:delete-client' peer.public_key|urlencode:'' %}">
{{ peer.endpoint }} - + {{ peer.public_key }}
{% trans "Public Key" %} {% trans "Last Connected Time" %}{% trans "Delete" %}
{{ peer.latest_handshake }} - -
{% trans "Endpoint" %} {% trans "Public Key" %} {% trans "Last Connected Time" %}{% trans "Edit" %}
{{ peer.latest_handshake }}Edit
{{ peer.latest_handshake }}
@@ -72,18 +71,17 @@ {% trans "Last Connected Time" %}
{{ peer.endpoint }}{{ server.peers.0.endpoint }} - - {{ peer.public_key }} + + {{ server.peers.0.public_key }} {{ peer.latest_handshake }}{{ server.peers.0.status.latest_handshake }}
diff --git a/plinth/modules/wireguard/templates/wireguard_delete_server.html b/plinth/modules/wireguard/templates/wireguard_delete_server.html index 1fb708300..b36cdf205 100644 --- a/plinth/modules/wireguard/templates/wireguard_delete_server.html +++ b/plinth/modules/wireguard/templates/wireguard_delete_server.html @@ -28,9 +28,18 @@

{% trans "Are you sure that you want to delete this server?" %}

-

- {{ public_key }} -

+ + + + + + + + + + + +
{% trans "Endpoint" %}{{ peer_endpoint }}
{% trans "Public Key" %}{{ peer_public_key }}
{% csrf_token %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 4d2abfe5f..416a87c6c 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -32,8 +32,8 @@

{% trans "Status" %}

{% trans "Client Public Key:" %} {{ client.public_key }}

-

{% trans "Data transmitted:" %} {{ client.transfer_tx }}

-

{% trans "Data received:" %} {{ client.transfer_rx }}

+

{% trans "Data transmitted:" %} {{ client.transfer_tx|filesizeformat }}

+

{% trans "Data received:" %} {{ client.transfer_rx|filesizeformat }}

{% trans "Latest handshake:" %} {{ client.latest_handshake }}

diff --git a/plinth/modules/wireguard/templates/wireguard_show_server.html b/plinth/modules/wireguard/templates/wireguard_show_server.html index 66f7a80b1..92a52d04e 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_server.html +++ b/plinth/modules/wireguard/templates/wireguard_show_server.html @@ -24,21 +24,43 @@

{{ title }}

-

{% trans "Server Information" %}

-

{% trans "Endpoint:" %} {{ server.endpoint }}

-

{% trans "Public Key:" %} {{ server.public_key }}

-

{% trans "Pre-shared key:" %} {{ server.preshared_key }}

-

{% trans "Data transmitted:" %} {{ server.transfer_tx }}

-

{% trans "Data received:" %} {{ server.transfer_rx }}

-

{% trans "Latest handshake:" %} {{ server.latest_handshake }}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{% trans "Endpoint:" %}{{ server.peers.0.endpoint }}
{% trans "Public Key:" %}{{ server.peers.0.public_key }}
{% trans "Pre-shared key:" %}{{ server.peers.0.preshared_key }}
{% trans "Data transmitted:" %}{{ server.peers.0.status.transfer_tx|filesizeformat }}
{% trans "Data received:" %}{{ server.peers.0.status.transfer_rx|filesizeformat }}
{% trans "Latest handshake:" %}{{ server.peers.0.status.latest_handshake }}

+ href="{% url 'wireguard:edit-server' interface %}"> + {% trans "Edit Server" %} + href="{% url 'wireguard:delete-server' interface %}"> {% trans "Delete Server" %} diff --git a/plinth/modules/wireguard/urls.py b/plinth/modules/wireguard/urls.py index 20c9c11d6..899b32aae 100644 --- a/plinth/modules/wireguard/urls.py +++ b/plinth/modules/wireguard/urls.py @@ -34,10 +34,10 @@ urlpatterns = [ views.DeleteClientView.as_view(), name='delete-client'), url(r'^apps/wireguard/server/add/$', views.AddServerView.as_view(), name='add-server'), - url(r'^apps/wireguard/server/(?P[^/]+)/show/$', + url(r'^apps/wireguard/server/(?Pwg[0-9]+)/show/$', views.ShowServerView.as_view(), name='show-server'), - url(r'^apps/wireguard/server/(?P[^/]+)/edit/$', + url(r'^apps/wireguard/server/(?Pwg[0-9]+)/edit/$', views.EditServerView.as_view(), name='edit-server'), - url(r'^apps/wireguard/server/(?P[^/]+)/delete/$', + url(r'^apps/wireguard/server/(?Pwg[0-9]+)/delete/$', views.DeleteServerView.as_view(), name='delete-server'), ] diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py new file mode 100644 index 000000000..d41ba042e --- /dev/null +++ b/plinth/modules/wireguard/utils.py @@ -0,0 +1,45 @@ +# +# 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 . +# +""" +Utilities for managing WireGuard. +""" + +import subprocess + +from plinth import network + + +def find_next_interface(): + """Find next unused wireguard interface name.""" + output = subprocess.check_output(['wg', 'show', + 'interfaces']).decode().strip() + interfaces = output.split() + interface_num = 1 + new_interface_name = 'wg1' + while new_interface_name in interfaces: + interface_num += 1 + new_interface_name = 'wg' + str(interface_num) + + return new_interface_name + + +def add_server(settings): + """Add a server.""" + interface_name = find_next_interface() + settings['common']['name'] = 'WireGuard-' + interface_name + settings['common']['interface'] = interface_name + network.add_connection(settings) diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 824b27a93..1e1f72141 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -18,22 +18,21 @@ Views for WireGuard application. """ -import json -import tempfile import urllib.parse from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin +from django.http import Http404 from django.shortcuts import redirect from django.urls import reverse_lazy from django.utils.translation import ugettext as _ from django.views.generic import FormView, TemplateView import plinth.modules.wireguard as wireguard -from plinth import actions +from plinth import actions, network from plinth.views import AppView -from . import forms +from . import forms, utils class WireguardView(AppView): @@ -159,29 +158,7 @@ class AddServerView(SuccessMessageMixin, FormView): def form_valid(self, form): """Add the server.""" - endpoint = form.cleaned_data.get('endpoint') - client_ip_address = form.cleaned_data.get('client_ip_address') - public_key = form.cleaned_data.get('public_key') - client_private_key = form.cleaned_data.get('client_private_key') - pre_shared_key = form.cleaned_data.get('pre_shared_key') - all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') - args = [ - 'add-server', '--endpoint', endpoint, '--client-ip', - client_ip_address, '--public-key', public_key - ] - secret_args = {} - if client_private_key: - secret_args['client_private_key'] = client_private_key - - if pre_shared_key: - secret_args['pre_shared_key'] = pre_shared_key - - if all_outgoing_traffic: - args.append('--all-outgoing') - - actions.superuser_run('wireguard', args, - input=json.dumps(secret_args).encode()) - + utils.add_server(form.get_settings()) return super().form_valid(form) @@ -192,15 +169,16 @@ class ShowServerView(SuccessMessageMixin, TemplateView): def get_context_data(self, **kwargs): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Show Server') + context['title'] = _('Server Information') - public_key = urllib.parse.unquote(self.kwargs['public_key']) + interface = self.kwargs['interface'] info = wireguard.get_info() - context.update(info) - for server in info['my_client']['servers']: - if server['public_key'] == public_key: - context['server'] = server + server = info['my_client']['servers'].get(interface) + if not server: + raise Http404 + context['interface'] = interface + context['server'] = server return context @@ -220,48 +198,31 @@ class EditServerView(SuccessMessageMixin, FormView): def get_initial(self): """Get initial form data.""" initial = super().get_initial() - public_key = urllib.parse.unquote(self.kwargs['public_key']) - info = wireguard.get_info() - for server in info['my_client']['servers']: - if server['public_key'] == public_key: - initial['endpoint'] = server['endpoint'] - initial['client_ip_address'] = '' - initial['public_key'] = server['public_key'] - pre_shared_key = server['preshared_key'] - if pre_shared_key == '(none)': - initial['pre_shared_key'] = '' - else: - initial['pre_shared_key'] = server['preshared_key'] + interface = self.kwargs['interface'] + info = wireguard.get_nm_info() + server = info.get(interface) + if not server: + raise Http404 - initial['all_outgoing_traffic'] = False + initial['ip_address'] = server.get('ip_address') + if server['peers']: + peer = server['peers'][0] + initial['peer_endpoint'] = peer['endpoint'] + initial['peer_public_key'] = peer['public_key'] + initial['private_key'] = server['private_key'] + initial['preshared_key'] = peer['preshared_key'] + initial['default_route'] = server['default_route'] return initial def form_valid(self, form): """Update the server.""" - endpoint = form.cleaned_data.get('endpoint') - client_ip_address = form.cleaned_data.get('client_ip_address') - public_key = form.cleaned_data.get('public_key') - client_private_key = form.client_data.get('client_private_key') - pre_shared_key = form.cleaned_data.get('pre_shared_key') - all_outgoing_traffic = form.cleaned_data.get('all_outgoing_traffic') - args = [ - 'modify-server', '--endpoint', endpoint, '--client-ip', - client_ip_address, '--public-key', public_key - ] - secret_args = {} - if client_private_key: - secret_args['client_private_key'] = client_private_key - - if pre_shared_key: - secret_args['pre_shared_key'] = pre_shared_key - - if all_outgoing_traffic: - args.append('--all-outgoing') - - actions.superuser_run('wireguard', args, - input=json.dumps(secret_args).encode()) - + settings = form.get_settings() + interface = self.kwargs['interface'] + settings['common']['interface'] = interface + settings['common']['name'] = 'WireGuard-' + interface + connection = network.get_connection_by_interface_name(interface) + network.edit_connection(connection, settings) return super().form_valid(form) @@ -273,12 +234,24 @@ class DeleteServerView(SuccessMessageMixin, TemplateView): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) context['title'] = _('Delete Server') - context['public_key'] = urllib.parse.unquote(self.kwargs['public_key']) + + interface = self.kwargs['interface'] + info = wireguard.get_nm_info() + server = info.get(interface) + if not server: + raise Http404 + + context['interface'] = interface + if server['peers']: + peer = server['peers'][0] + context['peer_endpoint'] = peer['endpoint'] + context['peer_public_key'] = peer['public_key'] + return context - def post(self, request, public_key): + def post(self, request, interface): """Delete the server.""" - public_key = urllib.parse.unquote(public_key) - actions.superuser_run('wireguard', ['remove-server', public_key]) + connection = network.get_connection_by_interface_name(interface) + network.delete_connection(connection.get_uuid()) messages.success(request, _('Server deleted.')) return redirect('wireguard:index') diff --git a/plinth/network.py b/plinth/network.py index 0a954f8e9..d491e3083 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -470,17 +470,25 @@ def _update_wireless_settings(connection, wireless): def _update_wireguard_settings(connection, wireguard): """Create/edit WireGuard settings for network manager connections.""" - settings = nm.SettingWireGuard.new() - connection.add_setting(settings) + settings = connection.get_setting_by_name('wireguard') + if not settings: + settings = nm.SettingWireGuard.new() + connection.add_setting(settings) settings.set_property(nm.SETTING_WIREGUARD_PRIVATE_KEY, wireguard['private_key']) peer = nm.WireGuardPeer.new() peer.set_endpoint(wireguard['peer_endpoint'], False) peer.set_public_key(wireguard['peer_public_key'], False) - peer.set_preshared_key(wireguard['preshared_key'], False) + if wireguard['preshared_key']: + # Flag NONE means that NM should store and retain the secret. + # Default seems to be NOT_REQUIRED in this case. + peer.set_preshared_key_flags(nm.SettingSecretFlags.NONE) + peer.set_preshared_key(wireguard['preshared_key'], False) + peer.append_allowed_ip('0.0.0.0/0', False) peer.append_allowed_ip('::/0', False) + settings.clear_peers() settings.append_peer(peer) From 6e1b0a36427c8601fcd1f901689ba262b4f4be26 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sun, 3 Nov 2019 14:13:13 -0800 Subject: [PATCH 39/87] wireguard: Handle client connections through network manager - Any changes done directly using 'wg' command need to be redone after a reboot and disable/enable sequence. Let that duty be handled by network manager. - Handle (none) values for keys and 0 values for latest handshake from 'wg' dump command output. - Don't store public/private keys for wireguard in /var/lib. Let Network Manager deal with the storage of secrets. - Create client connections in the 'external' zone. - Show allowed IPs for each client in the main page. - Show server connection public key only for clients. We use different key pairs when connecting to each of the servers. - Separate out configuration information and status information in the show page. - Allocate IP addresses to each of the clients. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/wireguard | 94 +-------- plinth/modules/wireguard/__init__.py | 98 --------- plinth/modules/wireguard/forms.py | 2 +- .../wireguard/templates/wireguard.html | 63 +++--- .../templates/wireguard_show_client.html | 59 ++++-- .../templates/wireguard_show_server.html | 52 ++--- plinth/modules/wireguard/utils.py | 195 +++++++++++++++++- plinth/modules/wireguard/views.py | 64 ++++-- plinth/network.py | 32 +-- 9 files changed, 368 insertions(+), 291 deletions(-) diff --git a/actions/wireguard b/actions/wireguard index 3856f795e..3558bb79f 100755 --- a/actions/wireguard +++ b/actions/wireguard @@ -21,99 +21,23 @@ Configuration helper for WireGuard. import argparse import json -import os -import pathlib import subprocess -PUBLIC_KEY_HELP = 'Public key for the client' - SERVER_INTERFACE = 'wg0' -KEY_FOLDER = pathlib.Path('/var/lib/freedombox/wireguard') -PRIVATE_KEY_PATH = KEY_FOLDER / 'privatekey' -PUBLIC_KEY_PATH = KEY_FOLDER / 'publickey' - - -class InterfaceNotFoundError(Exception): - """Exception raised when no matching interface is found.""" - def parse_arguments(): """Return parsed command line arguments as dictionary.""" parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - subparsers.add_parser('setup', help='Setup WireGuard') subparsers.add_parser('get-info', help='Get info for each configured interface') - add_client = subparsers.add_parser('add-client', help='Add a client') - add_client.add_argument('publickey', help=PUBLIC_KEY_HELP) - - remove_client = subparsers.add_parser('remove-client', - help='Remove a client') - remove_client.add_argument('publickey', help=PUBLIC_KEY_HELP) - - modify_server = subparsers.add_parser('modify-server', - help='Modify a server') - modify_server.add_argument('--endpoint', required=True, - help='Server endpoint') - modify_server.add_argument('--client-ip', required=True, - help='Client IP address provided by server') - modify_server.add_argument('--public-key', required=True, - help='Public key of the server') - modify_server.add_argument('--pre-shared-key', help='Pre-shared key') - modify_server.add_argument( - '--all-outgoing', action='store_true', - help='Use this connection to send all outgoing traffic') - - remove_server = subparsers.add_parser('remove-server', - help='Remove a server') - remove_server.add_argument('publickey', help=PUBLIC_KEY_HELP) - subparsers.required = True return parser.parse_args() -def _generate_key_pair(): - """Generate private/public key pair.""" - private_key = subprocess.check_output(['wg', 'genkey']) - public_key = subprocess.check_output(['wg', 'pubkey'], input=private_key) - KEY_FOLDER.mkdir(parents=True, exist_ok=True) - with PUBLIC_KEY_PATH.open(mode='wb') as public_key_file: - public_key_file.write(public_key) - - old_umask = os.umask(0o077) - try: - with PRIVATE_KEY_PATH.open(mode='wb') as private_key_file: - private_key_file.write(private_key) - - finally: - os.umask(old_umask) - - -def subcommand_setup(_): - """Setup WireGuard.""" - # Create interface. - try: - subprocess.run(['ip', 'link', 'show', SERVER_INTERFACE], - stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, - check=True) - except subprocess.CalledProcessError: - subprocess.run([ - 'ip', 'link', 'add', 'dev', SERVER_INTERFACE, 'type', 'wireguard' - ], check=True) - - if not (PUBLIC_KEY_PATH.exists() and PRIVATE_KEY_PATH.exists()): - _generate_key_pair() - - # Configure interface. - subprocess.run([ - 'wg', 'set', SERVER_INTERFACE, 'listen-port', '51820', 'private-key', - str(PRIVATE_KEY_PATH) - ], check=True) - - def _get_info(): """Return info for each configured interface.""" output = subprocess.check_output(['wg', 'show', 'all', @@ -125,14 +49,16 @@ def _get_info(): continue fields = line.split() + fields = [field if field != '(none)' else None for field in fields] interface_name = fields[0] if interface_name in interfaces: + latest_handshake = int(fields[5]) if int(fields[5]) else None peer = { 'public_key': fields[1], 'preshared_key': fields[2], 'endpoint': fields[3], 'allowed_ips': fields[4], - 'latest_handshake': fields[5], + 'latest_handshake': latest_handshake, 'transfer_rx': fields[6], 'transfer_tx': fields[7], 'persistent_keepalive': fields[8], @@ -157,20 +83,6 @@ def subcommand_get_info(_): print(json.dumps(_get_info())) -def subcommand_add_client(arguments): - """Add a client.""" - subprocess.run( - ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey], - check=True) - - -def subcommand_remove_client(arguments): - """Remove a client.""" - subprocess.run( - ['wg', 'set', SERVER_INTERFACE, 'peer', arguments.publickey, 'remove'], - check=True) - - def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 7cdb630e0..26d4bb552 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -18,13 +18,9 @@ FreedomBox app for wireguard. """ -import datetime -import json - from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ -from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.modules.firewall.components import Firewall @@ -102,98 +98,4 @@ def init(): def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) - helper.call('post', actions.superuser_run, 'wireguard', ['setup']) helper.call('post', app.enable) - - -def get_public_key(): - """Return this box's public key.""" - public_key_path = '/var/lib/freedombox/wireguard/publickey' - try: - with open(public_key_path) as public_key_file: - public_key = public_key_file.read().strip() - - except FileNotFoundError: - public_key = None - - return public_key - - -def get_nm_info(): - """Get information from network manager.""" - client = nm.Client.new(None) - - connections = {} - for connection in client.get_connections(): - if connection.get_connection_type() != 'wireguard': - continue - - settings = connection.get_setting_by_name('wireguard') - secrets = connection.get_secrets('wireguard') - connection.update_secrets('wireguard', secrets) - - info = {} - info['interface'] = connection.get_interface_name() - info['private_key'] = settings.get_private_key() - info['listen_port'] = settings.get_listen_port() - info['fwmark'] = settings.get_fwmark() - info['mtu'] = settings.get_mtu() - info['default_route'] = settings.get_ip4_auto_default_route() - info['peers'] = [] - for peer_index in range(settings.get_peers_len()): - peer = settings.get_peer(peer_index) - peer_info = { - 'endpoint': peer.get_endpoint(), - 'public_key': peer.get_public_key(), - 'preshared_key': peer.get_preshared_key(), - 'persistent_keepalive': peer.get_persistent_keepalive(), - 'allowed_ips': [] - } - for index in range(peer.get_allowed_ips_len()): - allowed_ip = peer.get_allowed_ip(index, None) - peer_info['allowed_ips'].append(allowed_ip) - - info['peers'].append(peer_info) - - settings_ipv4 = connection.get_setting_ip4_config() - if settings_ipv4 and settings_ipv4.get_num_addresses(): - info['ip_address'] = settings_ipv4.get_address(0).get_address() - - connections[info['interface']] = info - - return connections - - -def get_info(): - """Return server and clients info.""" - output = actions.superuser_run('wireguard', ['get-info']) - status = json.loads(output) - - nm_info = get_nm_info() - - my_server_info = status.pop(SERVER_INTERFACE, {}) - my_client_servers = {} - - for interface, info in nm_info.items(): - my_client_servers[interface] = info - - if interface not in status: - continue - - for info_peer in info['peers']: - for status_peer in status[interface]['peers']: - if info_peer['public_key'] == status_peer['public_key']: - info_peer['status'] = status_peer - status_peer['latest_handshake'] = \ - datetime.datetime.fromtimestamp( - int(status_peer['latest_handshake'])) - - return { - 'my_server': { - 'public_key': my_server_info.get('public_key'), - 'clients': my_server_info.get('peers'), - }, - 'my_client': { - 'servers': my_client_servers, - }, - } diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index 9dc7ef977..3f03abb42 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -64,7 +64,7 @@ class AddServerForm(forms.Form): settings = { 'common': { 'type': 'wireguard', - 'zone': 'internal', + 'zone': 'external', }, 'ipv4': { 'method': 'manual', diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 753836e44..8a85d2030 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -30,18 +30,22 @@ id="server-peers-list">

{% trans "Public Key" %}{% trans "Allowed IPs" %} {% trans "Last Connected Time" %}
- - {{ peer.public_key }} - - {{ peer.latest_handshake }}
+ + {{ peer.public_key }} + + {{ peer.allowed_ips|join:", " }}{{ peer.status.latest_handshake|default:'' }}
+

+ {% blocktrans %} + Public key for this {{ box_name }}: + {% endblocktrans %} +

{{ server.public_key }}
+

+
@@ -72,15 +83,19 @@ {% if client_peers %} {% for interface, server in client_peers.items %} - - {{ server.peers.0.endpoint }} - - - {{ server.peers.0.public_key }} - - - {{ server.peers.0.status.latest_handshake }} - + {% for peer in server.peers.values %} + {% if forloop.first %} + + {{ peer.endpoint }} + + + {{ peer.public_key }} + + + {{ peer.status.latest_handshake|default:'' }} + + {% endif %} + {% endfor %} {% endfor %} {% else %} @@ -100,16 +115,6 @@ {% trans "Add Server" %} -

{% trans "Connection Information" %}

- -

- {% blocktrans %} - Public key for this {{ box_name }}: - {% endblocktrans %} - -

{{ public_key }}
-

- {{ block.super }} {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 416a87c6c..51fc9edd7 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -22,23 +22,58 @@ {% block content %} -

{{ title }}

+

{% trans "Connection Information" %}

+ + + + + + + + + + + + + + + + + + + + + + + +
{% trans "Client public key:" %}{{ client.public_key }}
{% trans "IP address to use:" %}{{ client.allowed_ips|join:", " }}
{% trans "Pre-shared key:" %}{{ client.preshared_key }}
{% trans "Server endpoints:" %} + {% for endpoint in endpoints %} +
{{ endpoint }}
+ {% endfor %} +
{% trans "Server's public key:" %}{{ server.public_key }}
-

{% trans "Connection Information" %}

-

{% trans "IP address to use:" %}

-

{% trans "Server endpoints:" %}

-

{% trans "Server's public key:" %} {{ my_server.public_key }}

-

{% trans "Pre-shared key:" %}

- -

{% trans "Status" %}

-

{% trans "Client Public Key:" %} {{ client.public_key }}

-

{% trans "Data transmitted:" %} {{ client.transfer_tx|filesizeformat }}

-

{% trans "Data received:" %} {{ client.transfer_rx|filesizeformat }}

-

{% trans "Latest handshake:" %} {{ client.latest_handshake }}

+

{% trans "Status" %}

+ + + + + + + + + + + + + + + +
{% trans "Data transmitted:" %}{{ client.status.transfer_tx|filesizeformat }}
{% trans "Data received:" %}{{ client.status.transfer_rx|filesizeformat }}
{% trans "Latest handshake:" %}{{ client.status.latest_handshake|default:'' }}

+ {% trans "Edit Client" %} - - {% trans "Endpoint:" %} - {{ server.peers.0.endpoint }} - - - {% trans "Public Key:" %} - {{ server.peers.0.public_key }} - - - {% trans "Pre-shared key:" %} - {{ server.peers.0.preshared_key }} - - - {% trans "Data transmitted:" %} - {{ server.peers.0.status.transfer_tx|filesizeformat }} - - - {% trans "Data received:" %} - {{ server.peers.0.status.transfer_rx|filesizeformat }} - - - {% trans "Latest handshake:" %} - {{ server.peers.0.status.latest_handshake }} - + {% for peer in server.peers.values %} + {% if forloop.first %} + + {% trans "Endpoint:" %} + {{ peer.endpoint }} + + + {% trans "Public Key:" %} + {{ peer.public_key }} + + + {% trans "Pre-shared key:" %} + {{ peer.preshared_key }} + + + {% trans "Data transmitted:" %} + {{ peer.status.transfer_tx|filesizeformat }} + + + {% trans "Data received:" %} + {{ peer.status.transfer_rx|filesizeformat }} + + + {% trans "Latest handshake:" %} + {{ peer.status.latest_handshake|default:'' }} + + {% endif %} + {% endfor %} diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index d41ba042e..86c404001 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -18,9 +18,100 @@ Utilities for managing WireGuard. """ +import datetime +import json import subprocess +import time -from plinth import network +from plinth import actions, network +from plinth.utils import import_from_gi + +nm = import_from_gi('NM', '1.0') + +IP_TEMPLATE = '10.84.0.{}' +WIREGUARD_SETTING = nm.SETTING_WIREGUARD_SETTING_NAME + + +def get_nm_info(): + """Get information from network manager.""" + client = network.get_nm_client() + + connections = {} + for connection in client.get_connections(): + if connection.get_connection_type() != WIREGUARD_SETTING: + continue + + settings = connection.get_setting_by_name(WIREGUARD_SETTING) + secrets = connection.get_secrets(WIREGUARD_SETTING) + connection.update_secrets(WIREGUARD_SETTING, secrets) + + info = {} + info['interface'] = connection.get_interface_name() + info['private_key'] = settings.get_private_key() + info['public_key'] = None + info['listen_port'] = settings.get_listen_port() + info['fwmark'] = settings.get_fwmark() + info['mtu'] = settings.get_mtu() + info['default_route'] = settings.get_ip4_auto_default_route() + info['peers'] = {} + for peer_index in range(settings.get_peers_len()): + peer = settings.get_peer(peer_index) + peer_info = { + 'endpoint': peer.get_endpoint(), + 'public_key': peer.get_public_key(), + 'preshared_key': peer.get_preshared_key(), + 'persistent_keepalive': peer.get_persistent_keepalive(), + 'allowed_ips': [] + } + for index in range(peer.get_allowed_ips_len()): + allowed_ip = peer.get_allowed_ip(index, None) + peer_info['allowed_ips'].append(allowed_ip) + + info['peers'][peer_info['public_key']] = peer_info + + settings_ipv4 = connection.get_setting_ip4_config() + if settings_ipv4 and settings_ipv4.get_num_addresses(): + info['ip_address'] = settings_ipv4.get_address(0).get_address() + + connections[info['interface']] = info + + return connections + + +def get_info(): + """Return server and clients info.""" + output = actions.superuser_run('wireguard', ['get-info']) + status = json.loads(output) + + nm_info = get_nm_info() + + my_server_info = None + my_client_servers = {} + for interface, info in nm_info.items(): + if interface == 'wg0': + my_server_info = info + else: + my_client_servers[interface] = info + + if interface not in status: + continue + + info['public_key'] = status[interface]['public_key'] + for status_peer in status[interface]['peers']: + if status_peer['latest_handshake']: + status_peer['latest_handshake'] = \ + datetime.datetime.fromtimestamp( + status_peer['latest_handshake']) + public_key = status_peer['public_key'] + info_peer = info['peers'].setdefault(public_key, {}) + info_peer['status'] = status_peer + + return { + 'my_server': my_server_info, + 'my_client': { + 'servers': my_client_servers, + }, + } def find_next_interface(): @@ -38,8 +129,106 @@ def find_next_interface(): def add_server(settings): - """Add a server.""" + """Add information for connecting to a server.""" interface_name = find_next_interface() - settings['common']['name'] = 'WireGuard-' + interface_name + settings['common']['name'] = 'WireGuard-Client-' + interface_name settings['common']['interface'] = interface_name network.add_connection(settings) + + +def setup_server(): + """Setup a server connection that clients can connect to.""" + process = subprocess.run(['wg', 'genkey'], check=True, capture_output=True) + private_key = process.stdout.decode().strip() + settings = { + 'common': { + 'name': 'WireGuard-Server-wg0', + 'type': WIREGUARD_SETTING, + 'zone': 'internal', + 'interface': 'wg0' + }, + 'ipv4': { + 'method': 'manual', + 'address': IP_TEMPLATE.format(1), + 'netmask': '255.255.255.0', + 'gateway': '', + 'dns': '', + 'second_dns': '', + }, + 'wireguard': { + 'private_key': private_key, + 'listen_port': 51820, + } + } + network.add_connection(settings) + + +def _get_next_available_ip_address(settings): + """Get the next available IP address to allocate to a client.""" + allocated_ips = set() + for peer_index in range(settings.get_peers_len()): + peer = settings.get_peer(peer_index) + for ip_index in range(peer.get_allowed_ips_len()): + allowed_ip = peer.get_allowed_ip(ip_index) + # We assume these are simple IP addresses but they can be subnets. + allocated_ips.add(allowed_ip) + + for index in range(2, 254): + ip_address = IP_TEMPLATE.format(index) + if ip_address not in allocated_ips: + return ip_address + + raise IndexError('Reached client limit') + + +def _server_connection(): + """Return a server connection. Create one if necessary.""" + connection = network.get_connection_by_interface_name('wg0') + if not connection: + setup_server() + + for _ in range(10): + # XXX: Improve this waiting by doing a synchronous D-Bus operation to + # add network manager connection instead. + time.sleep(1) + connection = network.get_connection_by_interface_name('wg0') + if connection: + break + + if not connection: + raise RuntimeError('Unable to create a server connection.') + + # Retrieve secrets so that when the connection is changed, secrets are + # preserved properly. + secrets = connection.get_secrets(WIREGUARD_SETTING) + connection.update_secrets(WIREGUARD_SETTING, secrets) + + return connection + + +def add_client(public_key): + """Add a permission for a client to connect our server.""" + connection = _server_connection() + settings = connection.get_setting_by_name(WIREGUARD_SETTING) + peer, _ = settings.get_peer_by_public_key(public_key) + if peer: + raise ValueError('Peer with public key already exists') + + peer = nm.WireGuardPeer.new() + peer.set_public_key(public_key, False) + peer.set_persistent_keepalive(25) # To keep NAT 'connections' alive + peer.append_allowed_ip(_get_next_available_ip_address(settings), False) + settings.append_peer(peer) + connection.commit_changes(True) + + +def remove_client(public_key): + """Remove permission for a client to connect our server.""" + connection = _server_connection() + settings = connection.get_setting_by_name(WIREGUARD_SETTING) + peer, peer_index = settings.get_peer_by_public_key(public_key) + if not peer: + raise KeyError('Client not found') + + settings.remove_peer(peer_index) + connection.commit_changes(True) diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 1e1f72141..1558646a0 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -29,7 +29,8 @@ from django.utils.translation import ugettext as _ from django.views.generic import FormView, TemplateView import plinth.modules.wireguard as wireguard -from plinth import actions, network +from plinth import network +from plinth.modules.names.components import DomainName from plinth.views import AppView from . import forms, utils @@ -49,9 +50,8 @@ class WireguardView(AppView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) - context['public_key'] = wireguard.get_public_key() - info = wireguard.get_info() - context['server_peers'] = info['my_server']['clients'] + info = utils.get_info() + context['server'] = info['my_server'] context['client_peers'] = info['my_client']['servers'] return context @@ -72,7 +72,13 @@ class AddClientView(SuccessMessageMixin, FormView): def form_valid(self, form): """Add the client.""" public_key = form.cleaned_data.get('public_key') - actions.superuser_run('wireguard', ['add-client', public_key]) + try: + utils.add_client(public_key) + except ValueError: + messages.warning(self.request, + _('Client with public key already exists')) + return redirect('wireguard:index') + return super().form_valid(form) @@ -86,12 +92,17 @@ class ShowClientView(SuccessMessageMixin, TemplateView): context['title'] = _('Show Client') public_key = urllib.parse.unquote(self.kwargs['public_key']) - info = wireguard.get_info() - context.update(info) - for client in info['my_server']['clients']: - if client['public_key'] == public_key: - context['client'] = client + server_info = utils.get_info()['my_server'] + if not server_info or public_key not in server_info['peers']: + raise Http404 + domains = DomainName.list_names(filter_for_service='wireguard') + context['server'] = server_info + context['client'] = server_info['peers'][public_key] + context['endpoints'] = [ + domain + ':' + str(server_info['listen_port']) + for domain in domains + ] return context @@ -117,10 +128,17 @@ class EditClientView(SuccessMessageMixin, FormView): def form_valid(self, form): """Update the client.""" old_public_key = form.initial['public_key'] - actions.superuser_run('wireguard', ['remove-client', old_public_key]) - public_key = form.cleaned_data.get('public_key') - actions.superuser_run('wireguard', ['add-client', public_key]) + + if old_public_key != public_key: + try: + utils.add_client(public_key) + except ValueError: + messages.warning(self.request, + _('Client with public key already exists')) + + utils.remove_client(old_public_key) + return super().form_valid(form) @@ -138,8 +156,12 @@ class DeleteClientView(SuccessMessageMixin, TemplateView): def post(self, request, public_key): """Delete the client.""" public_key = urllib.parse.unquote(public_key) - actions.superuser_run('wireguard', ['remove-client', public_key]) - messages.success(request, _('Client deleted.')) + try: + utils.remove_client(public_key) + messages.success(request, _('Client deleted.')) + except KeyError: + messages.error(request, _('Client not found')) + return redirect('wireguard:index') @@ -172,7 +194,7 @@ class ShowServerView(SuccessMessageMixin, TemplateView): context['title'] = _('Server Information') interface = self.kwargs['interface'] - info = wireguard.get_info() + info = utils.get_info() server = info['my_client']['servers'].get(interface) if not server: raise Http404 @@ -199,14 +221,14 @@ class EditServerView(SuccessMessageMixin, FormView): """Get initial form data.""" initial = super().get_initial() interface = self.kwargs['interface'] - info = wireguard.get_nm_info() + info = utils.get_nm_info() server = info.get(interface) if not server: raise Http404 initial['ip_address'] = server.get('ip_address') if server['peers']: - peer = server['peers'][0] + peer = next(peer for peer in server['peers'].values()) initial['peer_endpoint'] = peer['endpoint'] initial['peer_public_key'] = peer['public_key'] initial['private_key'] = server['private_key'] @@ -220,7 +242,7 @@ class EditServerView(SuccessMessageMixin, FormView): settings = form.get_settings() interface = self.kwargs['interface'] settings['common']['interface'] = interface - settings['common']['name'] = 'WireGuard-' + interface + settings['common']['name'] = 'WireGuard-Client-' + interface connection = network.get_connection_by_interface_name(interface) network.edit_connection(connection, settings) return super().form_valid(form) @@ -236,14 +258,14 @@ class DeleteServerView(SuccessMessageMixin, TemplateView): context['title'] = _('Delete Server') interface = self.kwargs['interface'] - info = wireguard.get_nm_info() + info = utils.get_nm_info() server = info.get(interface) if not server: raise Http404 context['interface'] = interface if server['peers']: - peer = server['peers'][0] + peer = next(peer for peer in server['peers'].values()) context['peer_endpoint'] = peer['endpoint'] context['peer_public_key'] = peer['public_key'] diff --git a/plinth/network.py b/plinth/network.py index d491e3083..7d3add55c 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -477,19 +477,27 @@ def _update_wireguard_settings(connection, wireguard): settings.set_property(nm.SETTING_WIREGUARD_PRIVATE_KEY, wireguard['private_key']) - peer = nm.WireGuardPeer.new() - peer.set_endpoint(wireguard['peer_endpoint'], False) - peer.set_public_key(wireguard['peer_public_key'], False) - if wireguard['preshared_key']: - # Flag NONE means that NM should store and retain the secret. - # Default seems to be NOT_REQUIRED in this case. - peer.set_preshared_key_flags(nm.SettingSecretFlags.NONE) - peer.set_preshared_key(wireguard['preshared_key'], False) + if 'listen_port' in wireguard: + settings.set_property(nm.SETTING_WIREGUARD_LISTEN_PORT, + wireguard['listen_port']) - peer.append_allowed_ip('0.0.0.0/0', False) - peer.append_allowed_ip('::/0', False) - settings.clear_peers() - settings.append_peer(peer) + if 'peer_public_key' in wireguard: + peer = nm.WireGuardPeer.new() + peer.set_public_key(wireguard['peer_public_key'], False) + + if 'peer_endpoint' in wireguard: + peer.set_endpoint(wireguard['peer_endpoint'], False) + + if wireguard['preshared_key']: + # Flag NONE means that NM should store and retain the secret. + # Default seems to be NOT_REQUIRED in this case. + peer.set_preshared_key_flags(nm.SettingSecretFlags.NONE) + peer.set_preshared_key(wireguard['preshared_key'], False) + + peer.append_allowed_ip('0.0.0.0/0', False) + peer.append_allowed_ip('::/0', False) + settings.clear_peers() + settings.append_peer(peer) def _update_settings(connection, connection_uuid, settings): From 2b9d278a9535f7ee31f25e99f60792576f45b010 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 4 Nov 2019 09:56:13 -0800 Subject: [PATCH 40/87] wireguard: Update descriptions for client vs. server clarity Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/forms.py | 33 +++++++------ .../wireguard/templates/wireguard.html | 16 ++++--- .../templates/wireguard_add_server.html | 2 +- .../templates/wireguard_delete_client.html | 2 +- .../templates/wireguard_delete_server.html | 2 +- .../templates/wireguard_edit_server.html | 2 +- .../templates/wireguard_show_client.html | 16 +++++-- .../templates/wireguard_show_server.html | 48 +++++++++++++------ plinth/modules/wireguard/views.py | 14 +++--- 9 files changed, 85 insertions(+), 50 deletions(-) diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index 3f03abb42..e81c954c1 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -32,32 +32,37 @@ class AddClientForm(forms.Form): class AddServerForm(forms.Form): """Form to add server.""" peer_endpoint = forms.CharField( - label=_('Endpoint'), strip=True, - help_text=_('Server endpoint with the form "ip:port".')) + label=_('Endpoint of the server'), strip=True, + help_text=_('Domain name and port in the form "ip:port". Example: ' + 'demo.wireguard.com:12912 .')) peer_public_key = forms.CharField( - label=_('Public key of the server'), strip=True, - help_text=_('Public key of the server.')) + label=_('Public key of the server'), strip=True, help_text=_( + 'Provided by the server operator, a long string of characters.')) ip_address = forms.CharField( label=_('Client IP address provided by server'), strip=True, - help_text=_('IP address assigned to the client on the VPN after ' - 'connecting to the endpoint.')) + help_text=_('IP address assigned to this machine on the VPN after ' + 'connecting to the endpoint. This value is usually ' + 'provided by the server operator. Example: 192.168.0.10.')) private_key = forms.CharField( - label=_('Private key of the client'), strip=True, - help_text=_('Optional. A new key is generated if left blank.'), - required=False) + label=_('Private key of this machine'), strip=True, help_text=_( + 'Optional. New public/private keys are generated if left blank. ' + 'Public key can then be provided to the server. This is the ' + 'recommended way. However, some server operators insist on ' + 'providing this.'), required=False) preshared_key = forms.CharField( - label=_('Pre-shared key'), strip=True, required=False, - help_text=_('Optional. A shared secret key provided by the server to ' - 'add an additional layer of encryption.')) + label=_('Pre-shared key'), strip=True, required=False, help_text=_( + 'Optional. A shared secret key provided by the server to add an ' + 'additional layer of security. Fill in only if provided.')) default_route = forms.BooleanField( label=_('Use this connection to send all outgoing traffic'), - required=False, - help_text=_('Use this connection to send all outgoing traffic.')) + required=False, help_text=_( + 'Typically checked for a VPN service though which all traffic ' + 'is sent.')) def get_settings(self): """Return NM settings dict from cleaned data.""" diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 8a85d2030..c684a6101 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -22,9 +22,9 @@ {% load i18n %} {% block configuration %} -

{% trans "Server" %}

+

{% trans "As a Server" %}

-

{% trans "Peers allowed to connect to this server" %}

+

{% trans "Peers allowed to connect to this server:" %}

@@ -69,11 +69,15 @@ role="button" class="btn btn-default" href="{% url 'wireguard:add-client' %}"> - {% trans "Add Client" %} + {% trans "Add Allowed Client" %} -

{% trans "Client" %}

-

{% trans "Peer servers that FreedomBox will connect to" %}

+

{% trans "As a Client" %}

+

+ {% blocktrans trimmed %} + Servers that {{ box_name }} will connect to: + {% endblocktrans %} +

@@ -112,7 +116,7 @@ role="button" class="btn btn-default" href="{% url 'wireguard:add-server' %}"> - {% trans "Add Server" %} + {% trans "Add Connection to Server" %} {{ block.super }} diff --git a/plinth/modules/wireguard/templates/wireguard_add_server.html b/plinth/modules/wireguard/templates/wireguard_add_server.html index dc508b99c..39df9f286 100644 --- a/plinth/modules/wireguard/templates/wireguard_add_server.html +++ b/plinth/modules/wireguard/templates/wireguard_add_server.html @@ -31,7 +31,7 @@ {{ form|bootstrap }} + value="{% trans "Add Connection" %}"/> {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_delete_client.html b/plinth/modules/wireguard/templates/wireguard_delete_client.html index b69efd23b..b50c5a8fa 100644 --- a/plinth/modules/wireguard/templates/wireguard_delete_client.html +++ b/plinth/modules/wireguard/templates/wireguard_delete_client.html @@ -36,7 +36,7 @@ {% csrf_token %} + value="{% trans "Delete" %}"/> {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_delete_server.html b/plinth/modules/wireguard/templates/wireguard_delete_server.html index b36cdf205..635a395cc 100644 --- a/plinth/modules/wireguard/templates/wireguard_delete_server.html +++ b/plinth/modules/wireguard/templates/wireguard_delete_server.html @@ -45,7 +45,7 @@ {% csrf_token %} + value="{% trans "Delete" %}"/> {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_edit_server.html b/plinth/modules/wireguard/templates/wireguard_edit_server.html index b2f1a6e6c..42722b4e8 100644 --- a/plinth/modules/wireguard/templates/wireguard_edit_server.html +++ b/plinth/modules/wireguard/templates/wireguard_edit_server.html @@ -31,7 +31,7 @@ {{ form|bootstrap }} + value="{% trans "Update Connection" %}"/> {% endblock %} diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 51fc9edd7..aafd39138 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -22,7 +22,13 @@ {% block content %} -

{% trans "Connection Information" %}

+

{{ title }}

+

+ {% blocktrans trimmed %} + {{ box_name }} will allow this client to connect to it. Ensure that the + client is configured with the following information. + {% endblocktrans %} +

@@ -30,7 +36,7 @@ - + @@ -46,7 +52,7 @@ - + @@ -74,12 +80,12 @@ - {% trans "Edit Client" %} + {% trans "Edit" %} - {% trans "Delete Client" %} + {% trans "Delete" %}

diff --git a/plinth/modules/wireguard/templates/wireguard_show_server.html b/plinth/modules/wireguard/templates/wireguard_show_server.html index 150baab67..4a6764fe4 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_server.html +++ b/plinth/modules/wireguard/templates/wireguard_show_server.html @@ -22,24 +22,44 @@ {% block content %} -

{{ title }}

- -
{{ client.public_key }}
{% trans "IP address to use:" %}{% trans "IP address to use for client:" %} {{ client.allowed_ips|join:", " }}
{% trans "Server's public key:" %}{% trans "Server public key:" %} {{ server.public_key }}
- - {% for peer in server.peers.values %} - {% if forloop.first %} + {% for peer in server.peers.values %} + {% if forloop.first %} +

{{ title }}

+

+ {% blocktrans trimmed %} + {{ box_name }} will attempt to reach a WireGuard server with the + following information. Ensure that the server is configured to allow + {{ box_name }}'s public key and IP address. + {% endblocktrans %} +

+
+ - + - + + + + + + + + + + +
{% trans "Endpoint:" %}{% trans "Server endpoint:" %} {{ peer.endpoint }}
{% trans "Public Key:" %}{% trans "Server public key:" %} {{ peer.public_key }}
{% trans "Pre-shared key:" %} {{ peer.preshared_key }}
{% trans "Public key of this machine:" %}{{ server.public_key }}
{% trans "IP address of this machine:" %}{{ server.ip_address }}
+ +

{% trans "Status" %}

+ + @@ -52,21 +72,21 @@ - {% endif %} - {% endfor %} - -
{% trans "Data transmitted:" %} {{ peer.status.transfer_tx|filesizeformat }}{% trans "Latest handshake:" %} {{ peer.status.latest_handshake|default:'' }}
+ + + {% endif %} + {% endfor %}

- {% trans "Edit Server" %} + {% trans "Edit" %} - {% trans "Delete Server" %} + {% trans "Delete" %}

diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 1558646a0..519bcab11 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -66,7 +66,7 @@ class AddClientView(SuccessMessageMixin, FormView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Add Client') + context['title'] = _('Add Allowed Client') return context def form_valid(self, form): @@ -89,7 +89,7 @@ class ShowClientView(SuccessMessageMixin, TemplateView): def get_context_data(self, **kwargs): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Show Client') + context['title'] = _('Allowed Client') public_key = urllib.parse.unquote(self.kwargs['public_key']) server_info = utils.get_info()['my_server'] @@ -149,7 +149,7 @@ class DeleteClientView(SuccessMessageMixin, TemplateView): def get_context_data(self, **kwargs): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Delete Client') + context['title'] = _('Delete Allowed Client') context['public_key'] = urllib.parse.unquote(self.kwargs['public_key']) return context @@ -175,7 +175,7 @@ class AddServerView(SuccessMessageMixin, FormView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Add Server') + context['title'] = _('Add Connection to Server') return context def form_valid(self, form): @@ -191,7 +191,7 @@ class ShowServerView(SuccessMessageMixin, TemplateView): def get_context_data(self, **kwargs): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Server Information') + context['title'] = _('Connection to Server') interface = self.kwargs['interface'] info = utils.get_info() @@ -214,7 +214,7 @@ class EditServerView(SuccessMessageMixin, FormView): def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Modify Server') + context['title'] = _('Modify Connection to Server') return context def get_initial(self): @@ -255,7 +255,7 @@ class DeleteServerView(SuccessMessageMixin, TemplateView): def get_context_data(self, **kwargs): """Return additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - context['title'] = _('Delete Server') + context['title'] = _('Delete Connection to Server') interface = self.kwargs['interface'] info = utils.get_nm_info() From 69e418ada3eee8cd6832a7d6923b1849272ac319 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 18 Jan 2020 00:05:42 -0800 Subject: [PATCH 41/87] wireguard: Generate private key if needed when editing server - Refactor code that edits the connection to server. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/utils.py | 27 +++++++++++++++++++++++---- plinth/modules/wireguard/views.py | 6 +----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index 86c404001..4a4f26119 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -114,7 +114,13 @@ def get_info(): } -def find_next_interface(): +def _generate_private_key(): + """Return a private key generated by 'wg' command.""" + process = subprocess.run(['wg', 'genkey'], check=True, capture_output=True) + return process.stdout.decode().strip() + + +def _find_next_interface(): """Find next unused wireguard interface name.""" output = subprocess.check_output(['wg', 'show', 'interfaces']).decode().strip() @@ -130,16 +136,29 @@ def find_next_interface(): def add_server(settings): """Add information for connecting to a server.""" - interface_name = find_next_interface() + interface_name = _find_next_interface() settings['common']['name'] = 'WireGuard-Client-' + interface_name settings['common']['interface'] = interface_name + if not settings['wireguard']['private_key']: + settings['wireguard']['private_key'] = _generate_private_key() + network.add_connection(settings) +def edit_server(interface, settings): + """Edit information for a connecting to a server.""" + settings['common']['interface'] = interface + settings['common']['name'] = 'WireGuard-Client-' + interface + if not settings['wireguard']['private_key']: + settings['wireguard']['private_key'] = _generate_private_key() + + connection = network.get_connection_by_interface_name(interface) + network.edit_connection(connection, settings) + + def setup_server(): """Setup a server connection that clients can connect to.""" - process = subprocess.run(['wg', 'genkey'], check=True, capture_output=True) - private_key = process.stdout.decode().strip() + private_key = _generate_private_key() settings = { 'common': { 'name': 'WireGuard-Server-wg0', diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 519bcab11..b02ae65f1 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -239,12 +239,8 @@ class EditServerView(SuccessMessageMixin, FormView): def form_valid(self, form): """Update the server.""" - settings = form.get_settings() interface = self.kwargs['interface'] - settings['common']['interface'] = interface - settings['common']['name'] = 'WireGuard-Client-' + interface - connection = network.get_connection_by_interface_name(interface) - network.edit_connection(connection, settings) + utils.edit_server(interface, form.get_settings()) return super().form_valid(form) From 43ad12c563f678813bbc6da13b125f3fcc2dfd1f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 14 Jan 2020 18:56:40 -0800 Subject: [PATCH 42/87] wireguard: Add validations in forms Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/forms.py | 70 +++++++++++++++-- plinth/modules/wireguard/tests/__init__.py | 0 plinth/modules/wireguard/tests/test_forms.py | 79 ++++++++++++++++++++ 3 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 plinth/modules/wireguard/tests/__init__.py create mode 100644 plinth/modules/wireguard/tests/test_forms.py diff --git a/plinth/modules/wireguard/forms.py b/plinth/modules/wireguard/forms.py index e81c954c1..f7bfd7d8c 100644 --- a/plinth/modules/wireguard/forms.py +++ b/plinth/modules/wireguard/forms.py @@ -18,15 +18,65 @@ Forms for wireguard module. """ +import base64 +import binascii + from django import forms +from django.core.exceptions import ValidationError +from django.core.validators import validate_ipv4_address from django.utils.translation import ugettext_lazy as _ +KEY_LENGTH = 32 + + +def validate_key(key): + """Validate a WireGuard public/private/pre-shared key.""" + valid = False + if isinstance(key, str): + key = key.encode() + + try: + decoded_key = base64.b64decode(key) + if len(decoded_key) == KEY_LENGTH and base64.b64encode( + decoded_key) == key: + valid = True + except binascii.Error: + pass + + if not valid: + raise ValidationError(_('Invalid key.')) + + +def validate_endpoint(endpoint): + """Validate an endpoint of the form: demo.wireguard.com:12912. + + Implemented similar to nm-utils.c::_parse_endpoint(). + + """ + valid = False + try: + destination, port = endpoint.rsplit(':', maxsplit=1) + port = int(port) + if 1 <= port < ((1 << 16) - 1) and destination: + valid = True + + if destination[0] == '[' and (destination[-1] != ']' + or len(destination) < 3): + valid = False + except ValueError: + pass + + if not valid: + raise ValidationError('Invalid endpoint.') + class AddClientForm(forms.Form): """Form to add client.""" public_key = forms.CharField( label=_('Public Key'), strip=True, - help_text=_('Public key of the peer.')) + help_text=_('Public key of the peer. Example: ' + 'MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= .'), + validators=[validate_key]) class AddServerForm(forms.Form): @@ -34,29 +84,37 @@ class AddServerForm(forms.Form): peer_endpoint = forms.CharField( label=_('Endpoint of the server'), strip=True, help_text=_('Domain name and port in the form "ip:port". Example: ' - 'demo.wireguard.com:12912 .')) + 'demo.wireguard.com:12912 .'), + validators=[validate_endpoint]) peer_public_key = forms.CharField( label=_('Public key of the server'), strip=True, help_text=_( - 'Provided by the server operator, a long string of characters.')) + 'Provided by the server operator, a long string of characters. ' + 'Example: MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= .'), + validators=[validate_key]) ip_address = forms.CharField( label=_('Client IP address provided by server'), strip=True, help_text=_('IP address assigned to this machine on the VPN after ' 'connecting to the endpoint. This value is usually ' - 'provided by the server operator. Example: 192.168.0.10.')) + 'provided by the server operator. Example: 192.168.0.10.'), + validators=[validate_ipv4_address]) private_key = forms.CharField( label=_('Private key of this machine'), strip=True, help_text=_( 'Optional. New public/private keys are generated if left blank. ' 'Public key can then be provided to the server. This is the ' 'recommended way. However, some server operators insist on ' - 'providing this.'), required=False) + 'providing this. Example: ' + 'MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= .'), required=False, + validators=[validate_key]) preshared_key = forms.CharField( label=_('Pre-shared key'), strip=True, required=False, help_text=_( 'Optional. A shared secret key provided by the server to add an ' - 'additional layer of security. Fill in only if provided.')) + 'additional layer of security. Fill in only if provided. Example: ' + 'MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=.'), + validators=[validate_key]) default_route = forms.BooleanField( label=_('Use this connection to send all outgoing traffic'), diff --git a/plinth/modules/wireguard/tests/__init__.py b/plinth/modules/wireguard/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/wireguard/tests/test_forms.py b/plinth/modules/wireguard/tests/test_forms.py new file mode 100644 index 000000000..acf3b0ca9 --- /dev/null +++ b/plinth/modules/wireguard/tests/test_forms.py @@ -0,0 +1,79 @@ +# +# 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 . +# +""" +Tests for wireguard module forms. +""" + +import pytest +from django.core.exceptions import ValidationError + +from plinth.modules.wireguard.forms import validate_endpoint, validate_key + + +@pytest.mark.parametrize('key', [ + 'gKQhVGla4UtdqeY1dQ21G5lqrnX5NFcSEAqzM5iSdl0=', + 'uHWSYIjPnS9fYFhZ0mf22IkOMyrWXDlfpXs6ve4QGHk=', +]) +def test_validate_key_valid_patterns(key): + """Test that valid wireguard key patterns as accepted.""" + validate_key(key) + + +@pytest.mark.parametrize( + 'key', + [ + # Invalid padding + 'gKQhVGla4UtdqeY1dQ21G5lqrnX5NFcSEAqzM5iSdl0', + 'invalid-base64', + '', + 'aW52YWxpZC1sZW5ndGg=', # Incorrect length + ]) +def test_validate_key_invalid_patterns(key): + """Test that invalid wireguard key patterns are rejected.""" + with pytest.raises(ValidationError): + validate_key(key) + + +@pytest.mark.parametrize('endpoint', [ + '[1::2]:1234', + '1.2.3.4:1234', + 'example.com:1234', +]) +def test_validate_endpoint_valid_patterns(endpoint): + """Test that valid wireguard endpoint patterns are accepted.""" + validate_endpoint(endpoint) + + +@pytest.mark.parametrize( + 'endpoint', + [ + '', + # Invalid port + '1.2.3.4', + '1.2.3.4:', + '1.2.3.4:0', + '1.2.3.4:65536', + '1.2.3.4:1234invalid', + '1.2.3.4:invalid', + # Invalid IPv6 + '[]:1234', + '[:1234', + ]) +def test_validate_endpoint_invalid_patterns(endpoint): + """Test that invalid wireguard endpoint patterns are rejected.""" + with pytest.raises(ValidationError): + validate_endpoint(endpoint) From 642d44aced2b608589e651a0fb6f776104c41341 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 14 Jan 2020 19:01:12 -0800 Subject: [PATCH 43/87] wireguard: Ensure tests work without latest network manager Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/utils.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index 4a4f26119..09ed58142 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -29,21 +29,21 @@ from plinth.utils import import_from_gi nm = import_from_gi('NM', '1.0') IP_TEMPLATE = '10.84.0.{}' -WIREGUARD_SETTING = nm.SETTING_WIREGUARD_SETTING_NAME def get_nm_info(): """Get information from network manager.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME client = network.get_nm_client() connections = {} for connection in client.get_connections(): - if connection.get_connection_type() != WIREGUARD_SETTING: + if connection.get_connection_type() != setting_name: continue - settings = connection.get_setting_by_name(WIREGUARD_SETTING) - secrets = connection.get_secrets(WIREGUARD_SETTING) - connection.update_secrets(WIREGUARD_SETTING, secrets) + settings = connection.get_setting_by_name(setting_name) + secrets = connection.get_secrets(setting_name) + connection.update_secrets(setting_name, secrets) info = {} info['interface'] = connection.get_interface_name() @@ -158,11 +158,12 @@ def edit_server(interface, settings): def setup_server(): """Setup a server connection that clients can connect to.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME private_key = _generate_private_key() settings = { 'common': { 'name': 'WireGuard-Server-wg0', - 'type': WIREGUARD_SETTING, + 'type': setting_name, 'zone': 'internal', 'interface': 'wg0' }, @@ -202,6 +203,7 @@ def _get_next_available_ip_address(settings): def _server_connection(): """Return a server connection. Create one if necessary.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME connection = network.get_connection_by_interface_name('wg0') if not connection: setup_server() @@ -219,16 +221,17 @@ def _server_connection(): # Retrieve secrets so that when the connection is changed, secrets are # preserved properly. - secrets = connection.get_secrets(WIREGUARD_SETTING) - connection.update_secrets(WIREGUARD_SETTING, secrets) + secrets = connection.get_secrets(setting_name) + connection.update_secrets(setting_name, secrets) return connection def add_client(public_key): """Add a permission for a client to connect our server.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME connection = _server_connection() - settings = connection.get_setting_by_name(WIREGUARD_SETTING) + settings = connection.get_setting_by_name(setting_name) peer, _ = settings.get_peer_by_public_key(public_key) if peer: raise ValueError('Peer with public key already exists') @@ -243,8 +246,9 @@ def add_client(public_key): def remove_client(public_key): """Remove permission for a client to connect our server.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME connection = _server_connection() - settings = connection.get_setting_by_name(WIREGUARD_SETTING) + settings = connection.get_setting_by_name(setting_name) peer, peer_index = settings.get_peer_by_public_key(public_key) if not peer: raise KeyError('Client not found') From 0bc097f37d95b3f840aac9b0c759f29f84bae119 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 15 Jan 2020 11:00:16 -0800 Subject: [PATCH 44/87] wireguard: Implement enabling/disabling app using a stored flag Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/__init__.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 26d4bb552..341cfa402 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -84,6 +84,24 @@ class WireguardApp(app_module.App): ports=['wireguard-freedombox'], is_external=True) self.add(firewall) + def enable(self): + """Enable the app by simply storing a flag in key/value store.""" + from plinth import kvstore + super().enable() + kvstore.set('wireguard-enabled', True) + + def disable(self): + """Disable the app by simply storing a flag in key/value store.""" + from plinth import kvstore + super().disable() + kvstore.set('wireguard-enabled', False) + + def is_enabled(self): + """Return whether all leader components are enabled and flag is set.""" + from plinth import kvstore + enabled = super().is_enabled() + return enabled and kvstore.get_default('wireguard-enabled', False) + def init(): """Initialize the module.""" From 318df8723a5ff87084a19d1707d3f844cccfa652 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 15 Jan 2020 14:49:12 -0800 Subject: [PATCH 45/87] wireguard: Enable/disable connections along with the app Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/__init__.py | 3 +++ plinth/modules/wireguard/utils.py | 29 +++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 341cfa402..b359865a5 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -26,6 +26,7 @@ from plinth import cfg, frontpage, menu from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy, import_from_gi +from . import utils from .manifest import clients # noqa, pylint: disable=unused-import nm = import_from_gi('NM', '1.0') @@ -89,12 +90,14 @@ class WireguardApp(app_module.App): from plinth import kvstore super().enable() kvstore.set('wireguard-enabled', True) + utils.enable_connections(True) def disable(self): """Disable the app by simply storing a flag in key/value store.""" from plinth import kvstore super().disable() kvstore.set('wireguard-enabled', False) + utils.enable_connections(False) def is_enabled(self): """Return whether all leader components are enabled and flag is set.""" diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index 09ed58142..d6a8ec8e3 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -114,6 +114,27 @@ def get_info(): } +def enable_connections(enable): + """Activate all connections and set them to auto-connect.""" + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME + client = network.get_nm_client() + for connection in client.get_connections(): + if connection.get_connection_type() != setting_name: + continue + + network.edit_connection(connection, + {'common': { + 'autoconnect': enable + }}) + if enable: + network.activate_connection(connection.get_uuid()) + else: + try: + network.deactivate_connection(connection.get_uuid()) + except network.ConnectionNotFound: + pass # Connection is already inactive + + def _generate_private_key(): """Return a private key generated by 'wg' command.""" process = subprocess.run(['wg', 'genkey'], check=True, capture_output=True) @@ -136,9 +157,12 @@ def _find_next_interface(): def add_server(settings): """Add information for connecting to a server.""" + from plinth.modules.wireguard import app + interface_name = _find_next_interface() settings['common']['name'] = 'WireGuard-Client-' + interface_name settings['common']['interface'] = interface_name + settings['common']['autoconnect'] = app.is_enabled() if not settings['wireguard']['private_key']: settings['wireguard']['private_key'] = _generate_private_key() @@ -158,6 +182,8 @@ def edit_server(interface, settings): def setup_server(): """Setup a server connection that clients can connect to.""" + from plinth.modules.wireguard import app + setting_name = nm.SETTING_WIREGUARD_SETTING_NAME private_key = _generate_private_key() settings = { @@ -165,7 +191,8 @@ def setup_server(): 'name': 'WireGuard-Server-wg0', 'type': setting_name, 'zone': 'internal', - 'interface': 'wg0' + 'interface': 'wg0', + 'autoconnect': app.is_enabled(), }, 'ipv4': { 'method': 'manual', From f43d9a5469c6dd1652fc36e4f678adbe66d59766 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 16 Jan 2020 03:17:06 -0800 Subject: [PATCH 46/87] wireguard: When a connection is edited, reactivate to apply changes Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wireguard/utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index d6a8ec8e3..caf63417e 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -178,6 +178,7 @@ def edit_server(interface, settings): connection = network.get_connection_by_interface_name(interface) network.edit_connection(connection, settings) + network.reactivate_connection(connection.get_uuid()) def setup_server(): @@ -269,6 +270,7 @@ def add_client(public_key): peer.append_allowed_ip(_get_next_available_ip_address(settings), False) settings.append_peer(peer) connection.commit_changes(True) + network.reactivate_connection(connection.get_uuid()) def remove_client(public_key): @@ -282,3 +284,4 @@ def remove_client(public_key): settings.remove_peer(peer_index) connection.commit_changes(True) + network.reactivate_connection(connection.get_uuid()) From 419559a86f4ab6ad59ce50b3e1d7f9d939013584 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 17 Jan 2020 18:52:33 -0800 Subject: [PATCH 47/87] wireguard: Show public key even when connection is not active When wireguard interface is not active 'wg show' does not provide any information. In such case, get the public key by computing it from private key by calling 'wg pubkey'. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../modules/wireguard/templates/wireguard.html | 6 +++++- plinth/modules/wireguard/utils.py | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index c684a6101..8006611c8 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -62,7 +62,11 @@ {% blocktrans %} Public key for this {{ box_name }}: {% endblocktrans %} -
{{ server.public_key }}
+ {% if server.public_key %} +
{{ server.public_key }}
+ {% else %} +

{% trans "Not configured yet." %}

+ {% endif %}

Date: Wed, 15 Jan 2020 22:25:53 -0500 Subject: [PATCH 48/87] restore: Remove app The restore app has always been disabled, because node-restore package is not available in Debian (RFP #804507). There hasn't been progress towards packaging it since 2016. Signed-off-by: James Valleroy --- debian/freedombox.maintscript | 1 + plinth/modules/restore/__init__.py | 94 ------------------- .../data/etc/plinth/modules-enabled/restore | 1 - plinth/modules/restore/manifest.py | 28 ------ plinth/modules/restore/tests/__init__.py | 0 plinth/modules/restore/urls.py | 32 ------- 6 files changed, 1 insertion(+), 155 deletions(-) delete mode 100644 plinth/modules/restore/__init__.py delete mode 100644 plinth/modules/restore/data/etc/plinth/modules-enabled/restore delete mode 100644 plinth/modules/restore/manifest.py delete mode 100644 plinth/modules/restore/tests/__init__.py delete mode 100644 plinth/modules/restore/urls.py diff --git a/debian/freedombox.maintscript b/debian/freedombox.maintscript index 83b5e89d6..da539d56a 100644 --- a/debian/freedombox.maintscript +++ b/debian/freedombox.maintscript @@ -7,3 +7,4 @@ rm_conffile /etc/plinth/modules-enabled/owncloud 0.15.1+ds-2~ rm_conffile /etc/plinth/modules-enabled/system 0.15.1+ds-2~ rm_conffile /etc/plinth/modules-enabled/disks 0.15.3+ds-1~ rm_conffile /etc/plinth/modules-enabled/udiskie 0.39.0~ +rm_conffile /etc/plinth/modules-enabled/restore 20.1~ diff --git a/plinth/modules/restore/__init__.py b/plinth/modules/restore/__init__.py deleted file mode 100644 index 2f6dfd4bc..000000000 --- a/plinth/modules/restore/__init__.py +++ /dev/null @@ -1,94 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -""" -FreedomBox app to configure reStore. -""" - -from django.utils.translation import ugettext_lazy as _ - -from plinth import app as app_module -from plinth import cfg, menu -from plinth.daemon import Daemon -from plinth.modules.firewall.components import Firewall -from plinth.utils import format_lazy - -from .manifest import clients - -version = 1 - -managed_services = ['node-restore'] - -managed_packages = ['node-restore'] - -name = _('reStore') - -short_description = _('Unhosted Storage') - -description = [ - format_lazy( - _('reStore is a server for ' - 'unhosted web applications. The idea is to uncouple web ' - 'applications from data. No matter where a web application is ' - 'served from, the data can be stored on an unhosted storage ' - 'server of user\'s choice. With reStore, your {box_name} becomes ' - 'your unhosted storage server.'), box_name=_(cfg.box_name)), - _('You can create and edit accounts in the ' - 'reStore web-interface.') -] - -clients = clients - -reserved_usernames = ['node-restore'] - -app = None - - -class RestoreApp(app_module.App): - """FreedomBox app for Restore.""" - - app_id = 'restore' - - def __init__(self): - """Create components for the app.""" - super().__init__() - menu_item = menu.Menu('menu-restore', name, short_description, - 'fa-hdd-o', 'restore:index', - parent_url_name='apps') - self.add(menu_item) - - firewall = Firewall('firewall-restore', name, ports=['http', 'https'], - is_external=True) - self.add(firewall) - - daemon = Daemon('daemon-restore', managed_services[0]) - self.add(daemon) - - -def init(): - """Initialize the reStore module.""" - global app - app = RestoreApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.enable() - - -def setup(helper, old_version=None): - """Install and configure the module.""" - helper.install(managed_packages) - helper.call('post', app.enable) diff --git a/plinth/modules/restore/data/etc/plinth/modules-enabled/restore b/plinth/modules/restore/data/etc/plinth/modules-enabled/restore deleted file mode 100644 index 3707ee981..000000000 --- a/plinth/modules/restore/data/etc/plinth/modules-enabled/restore +++ /dev/null @@ -1 +0,0 @@ -#plinth.modules.restore diff --git a/plinth/modules/restore/manifest.py b/plinth/modules/restore/manifest.py deleted file mode 100644 index b5790e5fe..000000000 --- a/plinth/modules/restore/manifest.py +++ /dev/null @@ -1,28 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -from django.utils.translation import ugettext_lazy as _ - -from plinth.clients import validate - -clients = validate([{ - 'name': _('reStore'), - 'platforms': [{ - 'type': 'web', - 'url': '/restore' - }] -}]) diff --git a/plinth/modules/restore/tests/__init__.py b/plinth/modules/restore/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/plinth/modules/restore/urls.py b/plinth/modules/restore/urls.py deleted file mode 100644 index 1d8288de7..000000000 --- a/plinth/modules/restore/urls.py +++ /dev/null @@ -1,32 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -""" -URLs for the reStore module. -""" - -from django.conf.urls import url - -from plinth.modules import restore -from plinth.views import AppView - -urlpatterns = [ - url( - r'^apps/restore/$', - AppView.as_view(app_id='restore', name=restore.name, - description=restore.description, - clients=restore.clients), name='index'), -] From 21ba450484b63a200c6ef44ec0b9b8564c7b9327 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 15 Jan 2020 22:31:26 -0500 Subject: [PATCH 49/87] repro: Remove app The repro app has been disabled for a long time. Its package has been removed from Debian, and there is no sign of it returning soon. Signed-off-by: James Valleroy --- actions/repro | 75 ----- debian/copyright | 2 - debian/freedombox.maintscript | 1 + functional_tests/features/repro.feature | 43 --- functional_tests/step_definitions/site.py | 15 - functional_tests/support/site.py | 26 -- plinth/modules/repro/__init__.py | 134 --------- .../apache2/conf-available/repro-plinth.conf | 11 - .../data/etc/plinth/modules-enabled/repro | 1 - .../usr/lib/firewalld/services/rtp-plinth.xml | 6 - plinth/modules/repro/manifest.py | 90 ------ plinth/modules/repro/tests/__init__.py | 0 plinth/modules/repro/urls.py | 27 -- static/themes/default/icons/repro.png | Bin 3744 -> 0 bytes static/themes/default/icons/repro.svg | 282 ------------------ 15 files changed, 1 insertion(+), 712 deletions(-) delete mode 100755 actions/repro delete mode 100644 functional_tests/features/repro.feature delete mode 100644 plinth/modules/repro/__init__.py delete mode 100644 plinth/modules/repro/data/etc/apache2/conf-available/repro-plinth.conf delete mode 100644 plinth/modules/repro/data/etc/plinth/modules-enabled/repro delete mode 100644 plinth/modules/repro/data/usr/lib/firewalld/services/rtp-plinth.xml delete mode 100644 plinth/modules/repro/manifest.py delete mode 100644 plinth/modules/repro/tests/__init__.py delete mode 100644 plinth/modules/repro/urls.py delete mode 100644 static/themes/default/icons/repro.png delete mode 100644 static/themes/default/icons/repro.svg diff --git a/actions/repro b/actions/repro deleted file mode 100755 index 20b957696..000000000 --- a/actions/repro +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/python3 -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -""" -Configuration helper for repro SIP proxy. -""" - -import argparse - -from plinth import action_utils - -CONFIG = '/etc/repro/repro.config' - - -def parse_arguments(): - """Return parsed command line arguments as dictionary.""" - parser = argparse.ArgumentParser() - subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - - subparsers.add_parser('setup', help='Configure repro') - - subparsers.required = True - return parser.parse_args() - - -def subcommand_setup(_): - """Configure repro.""" - with open(CONFIG, 'r') as conf: - lines = conf.readlines() - - with open(CONFIG, 'w') as conf: - for line in lines: - if line.startswith('Database1Path'): - # workaround for Debian bug #803113 - conf.write('Database1Path = /var/lib/repro\n') - elif line.startswith('TLSPort'): - conf.write('TLSPort = 5061\n') - elif line.startswith('DisableHttpAuth'): - # let apache handle authentication - conf.write('DisableHttpAuth = true\n') - else: - conf.write(line) - - action_utils.service_restart('repro') - - # We have introduced new firewalld service files and wish to use - # them. - action_utils.service_reload('firewalld') - - -def main(): - """Parse arguments and perform all duties.""" - arguments = parse_arguments() - - subcommand = arguments.subcommand.replace('-', '_') - subcommand_method = globals()['subcommand_' + subcommand] - subcommand_method(arguments) - - -if __name__ == '__main__': - main() diff --git a/debian/copyright b/debian/copyright index aacdc0b09..79e553930 100644 --- a/debian/copyright +++ b/debian/copyright @@ -56,8 +56,6 @@ Files: static/themes/default/icons/diaspora.png static/themes/default/icons/privoxy.png static/themes/default/icons/privoxy.svg static/themes/default/icons/radicale.svg - static/themes/default/icons/repro.png - static/themes/default/icons/repro.svg static/themes/default/img/network-* Copyright: None Comment: Placed into public domain by authors (or) diff --git a/debian/freedombox.maintscript b/debian/freedombox.maintscript index da539d56a..0ae0f085e 100644 --- a/debian/freedombox.maintscript +++ b/debian/freedombox.maintscript @@ -8,3 +8,4 @@ rm_conffile /etc/plinth/modules-enabled/system 0.15.1+ds-2~ rm_conffile /etc/plinth/modules-enabled/disks 0.15.3+ds-1~ rm_conffile /etc/plinth/modules-enabled/udiskie 0.39.0~ rm_conffile /etc/plinth/modules-enabled/restore 20.1~ +rm_conffile /etc/plinth/modules-enabled/repro 20.1~ diff --git a/functional_tests/features/repro.feature b/functional_tests/features/repro.feature deleted file mode 100644 index 27313dbfc..000000000 --- a/functional_tests/features/repro.feature +++ /dev/null @@ -1,43 +0,0 @@ -# -# 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 . -# - -# XXX: Enable tests when repro module is enabled again. -@apps @sip @backups @sso @skip -Feature: Repro SIP Server - Make audio and video calls. - -Background: - Given I'm a logged in user - Given the repro application is installed - -Scenario: Enable repro application - Given the repro application is disabled - When I enable the repro application - Then the repro service should be running - -Scenario: Backup and restore repro - Given the repro application is enabled - And repro has been configured - When I create a backup of the repro app data - And I delete the repro configuration - And I restore the repro app data backup - Then the repro configuration should be restored - -Scenario: Disable repro application - Given the repro application is enabled - When I disable the repro application - Then the repro service should not be running diff --git a/functional_tests/step_definitions/site.py b/functional_tests/step_definitions/site.py index 5ede8366f..b210fb346 100644 --- a/functional_tests/step_definitions/site.py +++ b/functional_tests/step_definitions/site.py @@ -138,21 +138,6 @@ def mldonkey_assert_number_of_ed2k_files(browser, ed2k_files_number): assert ed2k_files_number == site.mldonkey_get_number_of_ed2k_files(browser) -@given('repro has been configured') -def repro_configure(browser): - site.repro_configure(browser) - - -@when('I delete the repro configuration') -def repro_delete_config(browser): - site.repro_delete_config(browser) - - -@then('the repro configuration should be restored') -def repro_is_configured(browser): - assert site.repro_is_configured(browser) - - @when('all torrents are removed from transmission') def transmission_remove_all_torrents(browser): site.transmission_remove_all_torrents(browser) diff --git a/functional_tests/support/site.py b/functional_tests/support/site.py index bca35d4ff..e4f8dac8f 100644 --- a/functional_tests/support/site.py +++ b/functional_tests/support/site.py @@ -171,32 +171,6 @@ def _mediawiki_has_main_page(browser): return 'This page has been deleted.' not in content.text -def repro_configure(browser): - """Configure repro.""" - browser.visit( - '{}/repro/domains.html?domainUri=freedombox.local&domainTlsPort=' - '&action=Add'.format(interface.default_url)) - - -def repro_delete_config(browser): - """Delete the repro config.""" - browser.visit('{}/repro/domains.html?domainUri=&domainTlsPort=' - '&action=Remove&remove.freedombox.local=on'.format( - interface.default_url)) - - -def repro_is_configured(browser): - """Check whether repro is configured.""" - return eventually(_repro_is_configured, [browser]) - - -def _repro_is_configured(browser): - """Check whether repro is configured.""" - browser.visit('{}/repro/domains.html'.format(interface.default_url)) - remove = browser.find_by_name('remove.freedombox.local') - return bool(remove) - - def jsxc_login(browser): """Login to JSXC.""" access_url(browser, 'jsxc') diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py deleted file mode 100644 index 83e44a89b..000000000 --- a/plinth/modules/repro/__init__.py +++ /dev/null @@ -1,134 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -""" -FreedomBox app for repro. -""" - -from django.urls import reverse_lazy -from django.utils.translation import ugettext_lazy as _ - -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.views import AppView - -from .manifest import backup, clients # noqa, pylint: disable=unused-import - -version = 2 - -managed_services = ['repro'] - -managed_packages = ['repro'] - -name = _('repro') - -short_description = _('SIP Server') - -description = [ - _('repro provides various SIP services that a SIP softphone can utilize ' - 'to provide audio and video calls as well as presence and instant ' - 'messaging. repro provides a server and SIP user accounts that clients ' - 'can use to let their presence known. It also acts as a proxy to ' - 'federate SIP communications to other servers on the Internet similar ' - 'to email.'), - _('To make SIP calls, a client application is needed. Available clients ' - 'include Jitsi (for computers) and ' - ' ' - 'CSipSimple (for Android phones).'), - _('Note: Before using repro, domains and users will ' - 'need to be configured using the web-based configuration panel. Users in ' - 'the admin group will be able to log in to the repro ' - 'configuration panel. After setting the domain, it is required to ' - 'restart the repro service. Disable the service and re-enable it.'), -] - -clients = clients - -reserved_usernames = ['repro'] - -manual_page = 'Repro' - -port_forwarding_info = [('UDP', '1024-65535')] - -app = None - - -class ReproApp(app_module.App): - """FreedomBox app for Repro.""" - - app_id = 'repro' - - def __init__(self): - """Create components for the app.""" - super().__init__() - menu_item = menu.Menu('menu-repro', name, short_description, 'repro', - 'repro:index', parent_url_name='apps') - self.add(menu_item) - - shortcut = frontpage.Shortcut( - 'shortcut-repro', name, short_description=short_description, - icon='repro', description=description, - configure_url=reverse_lazy('repro:index'), clients=clients, - login_required=True) - self.add(shortcut) - - firewall = Firewall('firewall-repro', name, - ports=['sip', 'sips', - 'rtp-plinth'], is_external=True) - self.add(firewall) - - webserver = Webserver('webserver-repro', 'repro-plinth') - self.add(webserver) - - daemon = Daemon( - 'daemon-repro', managed_services[0], listen_ports=[(5060, 'udp4'), - (5060, 'udp6'), - (5060, 'tcp4'), - (5060, 'tcp6'), - (5061, 'tcp4'), - (5061, 'tcp6')]) - self.add(daemon) - - -def init(): - """Initialize the repro module.""" - global app - app = ReproApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - -class ReproAppView(AppView): - clients = clients - name = name - description = description - app_id = 'repro' - manual_page = manual_page - port_forwarding_info = port_forwarding_info - - -def setup(helper, old_version=None): - """Install and configure the module.""" - helper.install(managed_packages) - helper.call('post', actions.superuser_run, 'repro', ['setup']) - helper.call('post', app.enable) diff --git a/plinth/modules/repro/data/etc/apache2/conf-available/repro-plinth.conf b/plinth/modules/repro/data/etc/apache2/conf-available/repro-plinth.conf deleted file mode 100644 index 8516c4324..000000000 --- a/plinth/modules/repro/data/etc/apache2/conf-available/repro-plinth.conf +++ /dev/null @@ -1,11 +0,0 @@ -## -## On all sites, provide repro admin interface on a path: /repro -## Only allow users of admin LDAP group. -## - - ProxyPass http://localhost:5080 - Include includes/freedombox-single-sign-on.conf - - TKTAuthToken "admin" - - diff --git a/plinth/modules/repro/data/etc/plinth/modules-enabled/repro b/plinth/modules/repro/data/etc/plinth/modules-enabled/repro deleted file mode 100644 index d8c707e05..000000000 --- a/plinth/modules/repro/data/etc/plinth/modules-enabled/repro +++ /dev/null @@ -1 +0,0 @@ -#plinth.modules.repro diff --git a/plinth/modules/repro/data/usr/lib/firewalld/services/rtp-plinth.xml b/plinth/modules/repro/data/usr/lib/firewalld/services/rtp-plinth.xml deleted file mode 100644 index 9f4d0e2e6..000000000 --- a/plinth/modules/repro/data/usr/lib/firewalld/services/rtp-plinth.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - Real-time Transport Protocol - RTP is a protocol for delivering real-time data such as audio and video. Enable this if you run an internet telephony server using XMPP, SIP or H.323 and wish to enable audio and video communications. - - diff --git a/plinth/modules/repro/manifest.py b/plinth/modules/repro/manifest.py deleted file mode 100644 index a0087faf8..000000000 --- a/plinth/modules/repro/manifest.py +++ /dev/null @@ -1,90 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -from django.utils.translation import ugettext_lazy as _ - -from plinth.modules.backups.api import validate as validate_backup -from plinth.clients import store_url, validate - -_jitsi_package_id = 'org.jitsi.meet' -_csipsimple_package_id = 'com.csipsimple' - -_jitsi_download_url = 'https://download.jitsi.org/jitsi/' - -clients = validate([{ - 'name': - _('Jitsi Meet'), - 'description': - _('Jitsi is a set of open-source projects that allows ' - 'you to easily build and deploy secure ' - 'videoconferencing solutions. At the heart of Jitsi ' - 'are Jitsi Videobridge and Jitsi Meet, which let you ' - 'have conferences on the internet, while other ' - 'projects in the community enable other features ' - 'such as audio, dial-in, recording, ' - 'and simulcasting.'), - 'platforms': [{ - 'type': 'store', - 'os': 'android', - 'store_name': 'google-play', - 'url': store_url('google-play', _jitsi_package_id) - }, { - 'type': 'store', - 'os': 'ios', - 'store_name': 'app-store', - 'url': 'https://itunes.apple.com/in/app/jitsi-meet/id1165103905' - }, { - 'type': 'download', - 'os': 'gnu-linux', - 'url': _jitsi_download_url - }, { - 'type': 'package', - 'format': 'deb', - 'name': 'jitsi' - }, { - 'type': 'download', - 'os': 'macos', - 'url': _jitsi_download_url - }, { - 'type': 'download', - 'os': 'windows', - 'url': _jitsi_download_url - }] -}, { - 'name': - _('CSipSimple'), - 'platforms': [{ - 'type': 'store', - 'os': 'android', - 'store_name': 'google-play', - 'url': store_url('google-play', _csipsimple_package_id) - }] -}]) - -backup = validate_backup({ - 'config': { - 'files': ['/etc/repro/repro.config', '/etc/repro/users.txt'] - }, - 'data': { - 'directories': ['/var/lib/repro/'] - }, - 'secrets': { - 'directories': ['/etc/repro/ssl/'], - 'files': ['/etc/repro/dh2048.pem'] - }, - 'services': ['repro'] -}) diff --git a/plinth/modules/repro/tests/__init__.py b/plinth/modules/repro/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/plinth/modules/repro/urls.py b/plinth/modules/repro/urls.py deleted file mode 100644 index 9433098ff..000000000 --- a/plinth/modules/repro/urls.py +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -""" -URLs for the repro module. -""" - -from django.conf.urls import url - -from plinth.modules.repro import ReproAppView - -urlpatterns = [ - url(r'^apps/repro/$', ReproAppView.as_view(), name='index'), -] diff --git a/static/themes/default/icons/repro.png b/static/themes/default/icons/repro.png deleted file mode 100644 index d5b0366ae3290db1c4c8d82b8f539f4c24841644..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3744 zcmb_fi9eKI7r!&ZjI!5HvMYPm3W-6BZDLYmNwP0d%94FBW@_HDR5CG>r9^{dEv4+! z6e3F*jIxbX%90T=n0TMx`!~GL=RTjioO8bSeC|Epd(TZhb<$RJyXV`H7i5XWvKDnu^dFqIj zmQ1Eah0qBdr&)i~|G>VF&nvx;4w^_>sb58}B(xL+OwZM_$3rR)*3TZAovU4OSH@6O z{~v|kau)2$t0L3SUlJe)<$s8>RvipexdYDtG(!(*j8QsFIdp`O?9fk8RsuLqDWgnu z2!q3>!H;Z5!#u=9WXp5tUAKfmM5AJyjsJ_g&Sii86^Z1toCVcff+*k){5|6aQMAX| z2`8m43L-Z2YU(p{PwX3e4pSB+2=fDXW@kHBorND6t%IZ3-hr6F91TEcWDs>(wc}`$ecz&bDI`d*PJk!JG3Laxye@$|>yuWT z4KmDX=RsiiH$uo)Xi=K@M!lW^l>hX_ljX>z6|qH-O=%F~P;KvkKQw8pu|&Iw2MXQ% zLjZCvxmr0<&BUz02i#c^cT`yxaIN%#U{{nPx*58Rrymx8!Qet+KjCW|V~pXwydTJ) z;ORz%ce-M=qOVw$1^oi!a6a2zBf1iGs{aPfH3)XdgB0~a z(pMsV|6u3S$#4^j<0vtE+0Dy1LlxuN-=XlnRQ$%9Z1yF0^daimENY*At9KUFTyb^j z+XBSoKC14yT^hW|JT`)ydMT`|utF+2Q7}&1*LmXZMa_`x8;b79H{ZT$_gI!)O_#m+ zvCa!$N6Hu}Ff^Y4Q-s_SZJ5@E1+uOPI1i+x)t&9{FlvcsrO8HqG`_rE<=J?GXYau_ z=8Q4IW;AumyQ+bsI{NJrMmCs_L-DCx&#fNA54^$#MMfvNy|uoGUtHCgX<$3imser+ z$((3nwonPJ_FhK`^|?4f(L)5ymng3DvDmHr9ZOm3UoDs>n~ix@cFwNi937^!r!nDz z^L7uxrj%VqgnO3Y?PSvkDX801t}Gck*i^cEH?~CCfp5{?u-kh^f0(_XH`pcBD#V#_ z(@V4u^j4S?4@oxgA&h}Xj0Dn|k6+rwS*t({UZw0Xy63`xCwXFJtNCY|gI_KPM?-P2 zO={43=Gi|y1MW-46a?&d7fEctzH~x?t6X?1u@uq_X-)t)UiExmM?|`#6q2&raR=fZ&;g6aEd`Ic4So zzxf~-$GAn%X-cQ|z5WklRj8ThB_q+U>wOH>u4^y4zLV2PuIrckCCQ{z;8{W55Vo|*Adq5@sLUcay5%T=P=_md}EX{-k> zb)|K#Z3~E#dqfi5s!C09r8-~%)q=4Ndh4!##r$YWc+khIG7iO5{NZr%NgI5r!{_Mw zR0DBFsdh#BK%gV6#b&oNJI6??bnRC^Z=X8uy&Cz`vrxg!n#l%-0BWA}h>)f9P(w=L zz@9}Ue%5xl7r*)&#&O^rU?#ya<>oRxkx5wNHMy$yZcF?`N%jHDTe(9AXr@1oF|7)d zhoY?0vKBYKtqLjq>e}&}vi`$_sk*mP&cZbN4o8boZg)T@Xo z8;WY;TSJBWTum%1JBkQVR^fd~U|;8VnTeo`>X(+khJ6fnAJ$MrY+tRdhRCkg$Fm4s zLoczVJT2wLgjrJr3-f|lWAlRPaFYNN`Kku>JmdMNMNPFEpML-DNUKV%Zj4^& z-j=f^q``jI?-z{(L={r<-cg~lQU46{I>X%}*X`}?-(HT7&zalc8(+pJ7MMS+2gf7-*+vmMS4Ij!!4`_!k4oZfMM(CfJd*!(=i^EkV7_}SF8NDz4hjRD-2G#255G2@ zJs2DbQV4c&kKYM86ra8U^H#noV-oy1y-@;y6$t|JFiP4WJMFF1O~-rRi>d^OKk~>w zJ3JW9veD>p4JQZlp%(yfEy)GP^_UPq)2pkC#y(ScjoAIb>KsY>3%mrEc}Ox;;z7d@ z##0P{t@ai{holEb+~+@$3%2VAIhTbn3CqNt&zPH&h*tN{AoH(pG*d3ni1ElT;%gyS}G z;jvuD8mK)oNY>)n%32O1?yS!oVk8jzs-h`S#!?Ul3qufE##0G`ch;x&a}IDWsR#3Y z#E;CRD@k5|Jz?Hs4Z()mZxfzrO3{-0*S_JB23L#|QhOdsW*UB)a^@MyeRos6Vf4`W ztQw!*@_V(5*UUkg{ja?@r?xVl9e9pXelc;t*EgS~`SgF1c}3NmQ?2!B-SaTJ`4_ip za4~APl%RZ0ZhkMn+Iwx33iC14NMso$_$Ja??`zCA^? zd}XTs(^7g>&vah19+u@2-`2GBEpS$H>0N2i(mUGS9+fSNgbK}!qS>@AttV$Fsyh1m z)lKIuZCB!S%n~kdHn`cWxS^9PBh$vGEzh0y+KJ!6&Agy@@1qw-iP+j<9ZDY>w%Z+g z?pusfIL=eauK(*3F>sD_Eo8%xQi5{quPPiN0a)7!mJwnkfwoR=k>;d2kbMn{Ab;@*VkwksCt>Gzej9RWSn1hdx z*+v7QJW|#I(QmqJtPcPcb=cg95@~#NUUV+>2bm02Gih- zYSL0(MHU_Z6~Pc?l-Pu*mKpB{b1=QO3(NGsT{avq=GT16%0Xd{uFDudEumAu6 diff --git a/static/themes/default/icons/repro.svg b/static/themes/default/icons/repro.svg deleted file mode 100644 index 7a27e1a00..000000000 --- a/static/themes/default/icons/repro.svg +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From ee97a510af2caa9ef8b5a8ff46403828269c6b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Mon, 20 Jan 2020 20:49:46 +0000 Subject: [PATCH 50/87] =?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 88.7% (1032 of 1163 strings) --- plinth/locale/nb/LC_MESSAGES/django.po | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 46d2d43e9..ae3e2bbe2 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: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-04 14:30+0000\n" +"PO-Revision-Date: 2020-01-20 22:39+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\n" +"X-Generator: Weblate 3.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1041,7 +1041,7 @@ msgstr "Resultater" #: plinth/modules/diagnostics/templates/diagnostics_app.html:27 #, python-format msgid "App: %(app_id)s" -msgstr "" +msgstr "Program: %(app_id)s" #: plinth/modules/diagnostics/templates/diagnostics_app.html:25 msgid "Diagnostic Results" @@ -1547,7 +1547,7 @@ msgstr "" #: plinth/modules/firewall/components.py:143 #, python-brace-format msgid "Port {name} ({details}) unavailable for external networks" -msgstr "" +msgstr "Port {name} ({details}) er utilgjengelig for eksterne nettverk" #: plinth/modules/firewall/templates/firewall.html:30 #, python-format @@ -1623,7 +1623,7 @@ msgstr "" #: plinth/modules/first_boot/forms.py:34 msgid "Firstboot Wizard Secret" -msgstr "" +msgstr "Hemmelighet for oppstartsveiviser" #: plinth/modules/first_boot/templates/firstboot_complete.html:26 msgid "Setup Complete!" @@ -2830,6 +2830,8 @@ msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Velg forvalgsdrakt for din MediaWiki-installasjon. Brukere kan velge egen " +"drakt." #: plinth/modules/mediawiki/views.py:74 msgid "Password updated" @@ -5064,8 +5066,9 @@ msgid "Sandboxed" msgstr "Block-sandkassen" #: plinth/modules/security/templates/security_report.html:62 +#, fuzzy msgid "N/A" -msgstr "" +msgstr "I/t" #: plinth/modules/security/templates/security_report.html:64 #, fuzzy @@ -5686,7 +5689,7 @@ msgstr "Ugyldig vertsnavn" #: plinth/modules/storage/forms.py:91 msgid "Directory does not exist." -msgstr "" +msgstr "Mappen finnes ikke." #: plinth/modules/storage/forms.py:93 #, fuzzy @@ -5702,7 +5705,7 @@ msgstr "Enheten er montert av en annen bruker." #: plinth/modules/storage/forms.py:99 msgid "Directory is not writable by the user." -msgstr "" +msgstr "Mappen kan ikke skrives til av brukeren." #: plinth/modules/storage/forms.py:104 #, fuzzy @@ -5712,7 +5715,7 @@ msgstr "Last ned katalog" #: plinth/modules/storage/forms.py:107 msgid "Subdirectory (optional)" -msgstr "" +msgstr "Undermappe (valgfritt)" #: plinth/modules/storage/forms.py:154 #, fuzzy @@ -5722,7 +5725,7 @@ msgstr "Delt" #: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" -msgstr "" +msgstr "Annen mappe (angi nedenfor)" #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" From f12f3ab02acdaae047ff3a91faf2023e490b2d78 Mon Sep 17 00:00:00 2001 From: Dietmar Date: Wed, 22 Jan 2020 20:29:39 +0000 Subject: [PATCH 51/87] Translated using Weblate (German) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 27 +++++++++++--------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index b9713e8ee..d5990f8e6 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: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-13 14:50+0000\n" -"Last-Translator: Ralf Barkow \n" +"PO-Revision-Date: 2020-01-22 23:37+0000\n" +"Last-Translator: Dietmar \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.1\n" +"X-Generator: Weblate 3.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -2765,16 +2765,16 @@ msgstr "" "Registrierung deaktiviert." #: plinth/modules/mediawiki/forms.py:59 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Standard" +msgstr "Standard Thema" #: plinth/modules/mediawiki/forms.py:60 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Wählen Sie eine Standard-Thema für Ihre MediaWiki-Installation. Benutzer " +"haben die Möglichkeit, ihr bevorzugtes Thema auszuwählen." #: plinth/modules/mediawiki/views.py:74 msgid "Password updated" @@ -2797,10 +2797,8 @@ msgid "Private mode disabled" msgstr "Privater Modus ausgeschaltet" #: plinth/modules/mediawiki/views.py:122 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Einstellung unverändert" +msgstr "Standard-Thema geändert" #: plinth/modules/minetest/__init__.py:50 #: plinth/modules/minetest/manifest.py:25 @@ -4958,18 +4956,12 @@ 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. It also lists " -#| "whether each service is using sandboxing features." msgid "" "The following table lists the current reported number, and historical count, " "of security vulnerabilities for each installed app." msgstr "" "In der folgenden Tabelle sind die aktuell gemeldete Anzahl und der Verlauf " -"der Sicherheitsanfälligkeiten für jede installierte App aufgeführt. " -"Ausserdem wird aufgeführt, welcher Dienst Sandbox-Funktionen verwendet." +"der Sicherheitsanfälligkeiten für jede installierte App aufgeführt." #: plinth/modules/security/templates/security_report.html:39 msgid "" @@ -4977,6 +4969,9 @@ msgid "" "sandboxing features are in use. Sandboxing mitigates the impact of a " "potentially compromised app to the rest of the system." msgstr "" +"Bei Apps, die Dienste anbieten, zeigt die Spalte \"Sandboxed\" an, ob die " +"Sandboxing-Funktionen verwendet werden. Sandboxing mildert die Auswirkungen " +"einer potenziell beschädigten App auf das übrige System." #: plinth/modules/security/templates/security_report.html:48 msgid "App Name" From e5d791fa5efa9d767bac43225ed77707ddbeb335 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Wed, 22 Jan 2020 22:30:39 +0000 Subject: [PATCH 52/87] Translated using Weblate (Greek) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/el/LC_MESSAGES/django.po | 188 ++++++++++++++----------- 1 file changed, 108 insertions(+), 80 deletions(-) diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 5ab3df3db..65b732c04 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-17 21:21+0000\n" +"PO-Revision-Date: 2020-01-22 23:37+0000\n" "Last-Translator: Nektarios Katakis \n" "Language-Team: Greek \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.2-dev\n" +"X-Generator: Weblate 3.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -61,7 +61,8 @@ msgstr "Ενεργοποίηση εφαρμογής" #: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -"Επιλέξτε ένα όνομα υπηρεσίας (DNS) για να χρησιμοποιηθεί με αυτή την εφαρμογή" +"Επιλέξτε ένα όνομα διαδικτύου (DNS) για να χρησιμοποιηθεί με αυτή την " +"εφαρμογή" #: plinth/forms.py:56 msgid "" @@ -69,7 +70,7 @@ msgid "" "later." msgstr "" "Προειδοποίηση! Η εφαρμογή ενδέχεται να μην λειτουργεί σωστά, εάν το όνομα " -"υπηρεσίας (DNS) αλλάξει αργότερα." +"διαδικτύου (DNS) αλλάξει αργότερα." #: plinth/forms.py:64 msgid "Language" @@ -177,11 +178,11 @@ msgstr "Ανέβασμα αρχείου" #: plinth/modules/backups/forms.py:96 msgid "Backup files have to be in .tar.gz format" -msgstr "Τα εφεδρικά αρχεία πρέπει να είναι σε μορφή. tar. gz" +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." @@ -212,7 +213,7 @@ msgid "" "backup." msgstr "" "\"Κλειδί στο αποθετήριο\" σημαίνει ότι ένα κλειδί που προστατεύεται με " -"κωδικό πρόσβασης αποθηκεύεται με το εφεδρικό αρχείο (backup)." +"κωδικό πρόσβασης αποθηκεύεται με το αντίγραφο ασφαλείας." #: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" @@ -244,8 +245,7 @@ msgstr "Επιλέξτε Δίσκο ή Διαμέρισμα του δίσκου" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "" -"Τα εφεδρικά αρχεία ασφαλείας θα αποθηκευτούν στον κατάλογο FreedomBoxBackups" +msgstr "Τα αντίγραφα ασφαλείας θα αποθηκευτούν στον κατάλογο FreedomBoxBackups" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" @@ -273,7 +273,7 @@ msgstr "" #: 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" @@ -306,8 +306,8 @@ 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." @@ -321,15 +321,15 @@ 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" @@ -337,23 +337,23 @@ 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 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 @@ -452,11 +452,11 @@ msgid "" " " msgstr "" "\n" -" Ανεβάστε ένα εφεδρικό αρχείο που κατεβάσατε από ένα άλλο %(box_name)s " -"για να επαναφέρετε τα\n" +" Ανεβάστε ένα αντίγραφο ασφαλείας που κατεβάσατε από ένα άλλο " +"%(box_name)s για να επαναφέρετε τα\n" " περιεχόμενα. Μπορείτε να επιλέξετε τις εφαρμογές που θέλετε να επαναφέρετε " "μετά την αποστολή ενός\n" -"αρχείο αντιγράφου ασφαλείας.\n" +"αρχείου αντιγράφου ασφαλείας.\n" " " #: plinth/modules/backups/templates/backups_upload.html:42 @@ -470,9 +470,9 @@ msgid "" "You have %(max_filesize)s available to restore a backup. Exceeding this " "limit can leave your %(box_name)s unusable." msgstr "" -"Έχετε διαθέσιμο χώρο %(max_filesize)s για την επαναφορά εφεδρικού αρχείου. " -"Εάν υπερβείτε αυτό το όριο, μπορεί να αφήσει το %(box_name)s να είναι " -"άχρηστο." +"Έχετε διαθέσιμο χώρο %(max_filesize)s για την επαναφορά αντιγράφου " +"ασφαλείας. Εάν υπερβείτε αυτό το όριο, μπορεί να αφήσει το %(box_name)s να " +"είναι άχρηστο." #: plinth/modules/backups/templates/backups_upload.html:56 msgid "Upload file" @@ -530,19 +530,19 @@ msgstr "Το αρχείο διαγράφηκε." #: plinth/modules/backups/views.py:124 msgid "Upload and restore a backup" -msgstr "Ανεβάστε και επαναφέρετε ένα εφεδρικό αρχείο" +msgstr "Ανεβάστε και επαναφέρετε ένα αντίγραφο ασφαλείας" #: plinth/modules/backups/views.py:159 msgid "Restored files from backup." -msgstr "Επαναφορά αρχείων από τα εφεδρικά αρχεία." +msgstr "Επαναφορά αρχείων από τα αντίγραφα ασφαλείας." #: plinth/modules/backups/views.py:186 msgid "No backup file found." -msgstr "Δεν βρέθηκε εφεδρικό αρχείο." +msgstr "Δεν βρέθηκε αντίγραφο ασφαλείας." #: plinth/modules/backups/views.py:194 msgid "Restore from uploaded file" -msgstr "Επαναφορά αρχείων από το αρχείο που ανεβάσατε" +msgstr "Επαναφορά από το αρχείο που ανεβάσατε" #: plinth/modules/backups/views.py:251 msgid "No additional disks available to add a repository." @@ -551,11 +551,11 @@ msgstr "" #: plinth/modules/backups/views.py:259 msgid "Create backup repository" -msgstr "Δημιουργία αποθετηρίου εφεδρικών αρχείων" +msgstr "Δημιουργία αποθετηρίου αντιγράφων ασφαλείας" #: plinth/modules/backups/views.py:286 msgid "Create remote backup repository" -msgstr "Δημιουργία απομακρυσμένου αποθετηρίου εφεδρικών αρχείων" +msgstr "Δημιουργία απομακρυσμένου αποθετηρίου αντιγράφων ασφαλείας" #: plinth/modules/backups/views.py:305 msgid "Added new remote SSH repository." @@ -6555,114 +6555,120 @@ msgid "" "plinth/issues\">bug tracker so we can fix it. Also, please attach the status log to the bug report." msgstr "" +"Αυτό είναι ένα εσωτερικό σφάλμα και όχι κάτι που προκαλέσατε ή μπορείτε να " +"διορθώσετε. Αναφέρετε το σφάλμα στο κατάλογος σφαλμάτων ώστε να μπορούμε να " +"το διορθώσουμε. Επίσης, Παρακαλούμε επισυνάψτε το αρχείο καταγραφής κατάστασης στην αναφορά " +"σφάλματος." #: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." -msgstr "" +msgstr "Η υπηρεσία %(service_name)s εκτελείται." #: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." -msgstr "" +msgstr "Η υπηρεσία %(service_name)s δεν εκτελείται." #: plinth/templates/base.html:50 #, python-format msgid "Core functionality and web interface for %(box_name)s" -msgstr "" +msgstr "Βασική λειτουργικότητα και σελίδα ιστού για το %(box_name)s" #: plinth/templates/base.html:96 msgid "Toggle navigation" -msgstr "" +msgstr "Αλλαγή πλοήγησης" #: plinth/templates/base.html:115 plinth/templates/base.html:118 msgid "Home" -msgstr "" +msgstr "Κεντρική σελίδα" #: plinth/templates/base.html:123 plinth/templates/base.html:127 msgid "Apps" -msgstr "" +msgstr "Εφαρμογές" #: plinth/templates/base.html:132 plinth/templates/base.html:136 msgid "System" -msgstr "" +msgstr "Σύστημα" #: plinth/templates/base.html:164 plinth/templates/base.html:165 msgid "Change password" -msgstr "" +msgstr "Αλλαγή κωδικού πρόσβασης" #: plinth/templates/base.html:172 plinth/templates/base.html:173 msgid "Restart" -msgstr "" +msgstr "Κάνετε επανεκκίνηση" #: plinth/templates/base.html:178 plinth/templates/base.html:179 msgid "Shut down" -msgstr "" +msgstr "ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ" #: plinth/templates/base.html:186 plinth/templates/base.html:187 #: plinth/templates/base.html:211 plinth/templates/base.html:213 msgid "Log out" -msgstr "" +msgstr "Αποσύνδεση" #: plinth/templates/base.html:195 plinth/templates/base.html:198 msgid "Select language" -msgstr "" +msgstr "Επιλογή γλώσσας" #: plinth/templates/base.html:203 plinth/templates/base.html:205 msgid "Log in" -msgstr "" +msgstr "Σύνδεση" #: plinth/templates/clients.html:32 msgid "Web" -msgstr "" +msgstr "Ιστός" #: plinth/templates/clients.html:57 msgid "Desktop" -msgstr "" +msgstr "Επιφάνειας εργασίας" #: plinth/templates/clients.html:68 msgid "GNU/Linux" -msgstr "" +msgstr "GNU/Linux" #: plinth/templates/clients.html:70 msgid "Windows" -msgstr "" +msgstr "Windows" #: plinth/templates/clients.html:72 msgid "macOS" -msgstr "" +msgstr "macOS" #: plinth/templates/clients.html:88 msgid "Mobile" -msgstr "" +msgstr "Κινητό" #: plinth/templates/clients.html:99 msgid "Play Store" -msgstr "" +msgstr "Play Store" #: plinth/templates/clients.html:101 msgid "F-Droid" -msgstr "" +msgstr "F-Droid" #: plinth/templates/clients.html:103 msgid "App Store" -msgstr "" +msgstr "Κατάστημα εφαρμογών" #: plinth/templates/clients.html:119 msgid "Package" -msgstr "" +msgstr "Πακέτο" #: plinth/templates/clients.html:126 msgid "Debian:" -msgstr "" +msgstr "Debian:" #: plinth/templates/clients.html:129 msgid "Homebrew:" -msgstr "" +msgstr "Homebrew:" #: plinth/templates/clients.html:132 msgid "RPM:" -msgstr "" +msgstr "RPM:" #: plinth/templates/first_setup.html:39 #, python-format @@ -6670,10 +6676,12 @@ msgid "" "Please wait for %(box_name)s to finish installation. You can start using " "your %(box_name)s once it is done." msgstr "" +"Περιμένετε να ολοκληρωθεί η εγκατάσταση του %(box_name)s. Μπορείτε να " +"αρχίσετε να χρησιμοποιείτε το %(box_name)s μόλις ολοκληρωθεί." #: plinth/templates/header.html:36 msgid "Installation" -msgstr "" +msgstr "Εγκατάσταση" #: plinth/templates/index.html:37 #, python-format @@ -6681,10 +6689,12 @@ msgid "" "Enable some applications to add shortcuts to " "this page." msgstr "" +"Ενεργοποιήστε μερικές εφαρμογές για να " +"προσθέσετε συντομεύσεις σε αυτήν τη σελίδα." #: plinth/templates/index.html:59 msgid "Configure »" -msgstr "" +msgstr "Ρύθμιση παραμέτρων »" #: plinth/templates/index.html:115 #, python-format @@ -6693,6 +6703,10 @@ msgid "" "server to deploy social applications on small machines. It provides online " "communication tools respecting your privacy and data ownership." msgstr "" +"%(box_name)s, ένα καθαρό μίγμα Debian, είναι ένα 100%% ελεύθερο λογισμικό " +"διακομιστής για να τρέξετε κοινωνικές εφαρμογές σε αδύναμους υπολογιστές. " +"Παρέχει εργαλεία επικοινωνίας που σέβονται την ιδιωτική σας ζωή και τα " +"προσωπικά δεδομένα σας." #: plinth/templates/index.html:124 #, python-format @@ -6701,39 +6715,46 @@ msgid "" "free software, distributed under the GNU Affero General Public License, " "Version 3 or later." msgstr "" +"Αυτή η πύλη είναι μέρος της σελίδας ιστού του %(box_name)s. το %(box_name)s " +"είναι ελεύθερο λογισμικό, που διανέμεται με τη γενική άδεια δημόσιας χρήσης " +"GNU Affero, έκδοση 3 ή νεότερη." #: plinth/templates/index.html:144 msgid "Homepage" -msgstr "" +msgstr "Αρχική σελίδα" #: plinth/templates/index.html:147 msgid "Source Code" -msgstr "" +msgstr "Πηγαίος Κώδικας" #: plinth/templates/index.html:150 msgid "Donate" -msgstr "" +msgstr "Δωρεά" #: plinth/templates/index.html:154 msgid "FreedomBox Foundation" -msgstr "" +msgstr "Ίδρυμα FreedomBox" #: plinth/templates/index.html:161 msgid "IRC Chatroom" -msgstr "" +msgstr "Αίθουσα συνομιλίας IRC" #: plinth/templates/index.html:166 msgid "Mailing list" -msgstr "" +msgstr "Λίστα ηλεκτρονικού ταχυδρομείου" #: plinth/templates/internal-zone.html:26 #, python-format msgid "%(service_name)s is available only on internal networks." msgstr "" +"Η υπηρεσία %(service_name)s είναι διαθέσιμη μόνο σε εσωτερικά " +"δίκτυα." #: plinth/templates/internal-zone.html:32 msgid "Currently there are no network interfaces configured as internal." msgstr "" +"Αυτή τη στιγμή δεν υπάρχουν διασυνδέσεις δικτύου που έχουν ρυθμιστεί ως " +"εσωτερικές." #: plinth/templates/internal-zone.html:34 #, python-format @@ -6741,10 +6762,12 @@ msgid "" "Currently the following network interfaces are configured as internal: " "%(interface_list)s" msgstr "" +"Προς το παρόν οι ακόλουθες διασυνδέσεις δικτύου έχουν ρυθμιστεί ως " +"εσωτερικές: %(interface_list)s" #: plinth/templates/port-forwarding-info.html:23 msgid "Port Forwarding" -msgstr "" +msgstr "Προώθηση θυρών" #: plinth/templates/port-forwarding-info.html:26 #, python-format @@ -6753,63 +6776,68 @@ msgid "" "forwarding on your router. You should forward the following ports for " "%(service_name)s:" msgstr "" +"Αν το FreedomBox είναι πίσω από ένα router, θα πρέπει να ρυθμίσετε την " +"προώθηση των θυρών στο δρομολογητή σας. Θα πρέπει να προωθήσετε τις " +"ακόλουθες θύρες για %(service_name)s:" #: plinth/templates/setup.html:51 msgid "Install this application?" -msgstr "" +msgstr "Να εγκατασταθεί αυτή η εφαρμογή;" #: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" -msgstr "" +msgstr "Αυτή η εφαρμογή χρειάζεται μια ενημέρωση. Ενημέρωση τώρα?" #: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" +"Εκτελείται ήδη μια άλλη εγκατάσταση ή αναβάθμιση. Παρακαλώ περιμένετε λίγα " +"λεπτά πριν προσπαθήσετε ξανά." #: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." -msgstr "" +msgstr "Αυτή η εφαρμογή δεν είναι αυτή τη στιγμή διαθέσιμη στο λειτουργικό σας." #: plinth/templates/setup.html:87 msgid "Install" -msgstr "" +msgstr "Εγκατάσταση" #: plinth/templates/setup.html:98 msgid "Performing pre-install operation" -msgstr "" +msgstr "Εκτελείται διαδικασία πριν από την εγκατάσταση" #: plinth/templates/setup.html:102 msgid "Performing post-install operation" -msgstr "" +msgstr "Εκτέλεση διαδικασία μετά την εγκατάσταση" #: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" -msgstr "" +msgstr "Εγκατάσταση του %(package_names)s: %(status)s" #: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" -msgstr "" +msgstr "ολοκληρώθηκε το %(percentage)s%%" #: plinth/templates/toolbar.html:38 msgid "Launch web client" -msgstr "" +msgstr "Εκτέλεση περιηγητή ιστού" #: plinth/templates/toolbar.html:47 msgid "Client Apps" -msgstr "" +msgstr "Πελάτες εφαρμογές" #: plinth/views.py:179 msgid "Application enabled" -msgstr "" +msgstr "Η εφαρμογή ενεργοποιήθηκε" #: plinth/views.py:182 msgid "Application disabled" -msgstr "" +msgstr "Η εφαρμογή απενεργοποιήθηκε" #: plinth/web_framework.py:188 msgid "Gujarati" -msgstr "" +msgstr "Gujarati" From ea9e482f5583e624d94c0a4bf5a164231104954d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 24 Jan 2020 05:34:15 +0000 Subject: [PATCH 53/87] Translated using Weblate (German) Currently translated at 99.9% (1162 of 1163 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index d5990f8e6..aa900cf39 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: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-22 23:37+0000\n" -"Last-Translator: Dietmar \n" +"PO-Revision-Date: 2020-01-24 16:16+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: German \n" "Language: de\n" @@ -2949,8 +2949,9 @@ msgid "yaacc" msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:114 +#, fuzzy msgid "totem" -msgstr "Totem" +msgstr "totem" #: plinth/modules/minidlna/views.py:57 msgid "Specified directory does not exist." @@ -4768,7 +4769,7 @@ msgstr "Genutzt" #: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" -msgstr "vfat Partitionen werden nicht unterstützt" +msgstr "VFAT Partitionen werden nicht unterstützt" #: plinth/modules/samba/templates/samba.html:103 #, python-format From daadd9b758598e401132e9cfa30aa0aa60d1abaf Mon Sep 17 00:00:00 2001 From: nautilusx Date: Fri, 24 Jan 2020 16:11:20 +0000 Subject: [PATCH 54/87] Translated using Weblate (German) Currently translated at 99.9% (1162 of 1163 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index aa900cf39..4896aebf2 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" "PO-Revision-Date: 2020-01-24 16:16+0000\n" -"Last-Translator: Allan Nordhøy \n" +"Last-Translator: nautilusx \n" "Language-Team: German \n" "Language: de\n" @@ -2938,15 +2938,15 @@ msgstr "" #: plinth/modules/minidlna/manifest.py:25 msgid "vlc" -msgstr "Vlc" +msgstr "VLC" #: plinth/modules/minidlna/manifest.py:64 msgid "kodi" -msgstr "kodi" +msgstr "Kodi" #: plinth/modules/minidlna/manifest.py:103 msgid "yaacc" -msgstr "yaacc" +msgstr "Yaacc" #: plinth/modules/minidlna/manifest.py:114 #, fuzzy From 8290c5e073a65493f1977153a47cec6fcdd260a0 Mon Sep 17 00:00:00 2001 From: nautilusx Date: Fri, 24 Jan 2020 16:16:25 +0000 Subject: [PATCH 55/87] Translated using Weblate (German) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 4896aebf2..64616af1f 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-24 16:16+0000\n" +"PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: nautilusx \n" "Language-Team: German \n" @@ -2949,9 +2949,8 @@ msgid "yaacc" msgstr "Yaacc" #: plinth/modules/minidlna/manifest.py:114 -#, fuzzy msgid "totem" -msgstr "totem" +msgstr "Totem" #: plinth/modules/minidlna/views.py:57 msgid "Specified directory does not exist." From 79eb08b7feed7ad02bdc1b00d89c9fbb913f7cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 24 Jan 2020 05:37:34 +0000 Subject: [PATCH 56/87] Translated using Weblate (Spanish) Currently translated at 94.8% (1102 of 1163 strings) --- plinth/locale/es/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 0b64e004e..b6478e36b 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2019-12-11 16:43+0000\n" -"Last-Translator: Luis A. Arizmendi \n" +"PO-Revision-Date: 2020-01-25 17:21+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Spanish \n" "Language: es\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.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -4723,7 +4723,7 @@ msgstr "Usado" #: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" -msgstr "Las particiones vfat no están soportadas" +msgstr "Las particiones VFAT no están soportadas" #: plinth/modules/samba/templates/samba.html:103 #, python-format From c5b00028888abb8aabb0b97dcc8547c76bdd7bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 24 Jan 2020 05:01:41 +0000 Subject: [PATCH 57/87] =?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 89.5% (1041 of 1163 strings) --- plinth/locale/nb/LC_MESSAGES/django.po | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index ae3e2bbe2..d46477ee2 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: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-20 22:39+0000\n" +"PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" @@ -492,6 +492,8 @@ msgid "" "Could not reach SSH host %(hostname)s. Please verify that the host is up and " "accepting connections." msgstr "" +"Kunne ikke nå SSH-verten %(hostname)s. Bekreft at verten er oppe og at den " +"godtar tilkoblinger." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:43 #, python-format @@ -499,6 +501,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 "" +"Kunne ikke identitetsbekrefte %(hostname)s. Verten annonserer følgende " +"offentlige SSH-nøkler. Bekreft en vilkårlig nøkkel av dem." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:55 msgid "How to verify?" @@ -700,6 +704,8 @@ 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 krever at du når det gjennom et domenenavn. Det fungerer ikke når " +"det nås ved bruk av en IP-adresse, eller som del av nettadressen." #: plinth/modules/cockpit/templates/cockpit.html:26 #, fuzzy @@ -709,7 +715,7 @@ msgstr "Aksesspunkt" #: plinth/modules/cockpit/templates/cockpit.html:29 msgid "Cockpit will only work when accessed using the following URLs." -msgstr "" +msgstr "Cockpit fungerer kun når det nås fra følgende nettadresser." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -720,6 +726,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Her kan du sette noen generelle oppsettsvalg som vertsnavn, domenenavn, " +"vevtjener-hjemmeside, 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 @@ -2990,11 +2998,11 @@ msgstr "" #: 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 #, fuzzy @@ -4797,7 +4805,7 @@ msgstr "" #: plinth/modules/samba/__init__.py:68 msgid "Access to the private shares" -msgstr "" +msgstr "Tilgang til private delinger" #: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 @@ -4825,7 +4833,7 @@ msgstr "Brukt" #: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" -msgstr "" +msgstr "VFAT-partisjoner støttes ikke" #: plinth/modules/samba/templates/samba.html:103 #, python-format From 52bae86a8a38b09c6fc81f7dd4cf5f1da237c127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 24 Jan 2020 05:07:18 +0000 Subject: [PATCH 58/87] Translated using Weblate (Swedish) Currently translated at 99.5% (1157 of 1163 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index f60948554..744c3bcf9 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-03 07:55+0000\n" -"Last-Translator: Michael Breidenbach \n" +"PO-Revision-Date: 2020-01-25 17:21+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Swedish \n" "Language: sv\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\n" +"X-Generator: Weblate 3.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -697,12 +697,13 @@ msgid "General Configuration" msgstr "Allmän Konfiguration" #: plinth/modules/config/__init__.py:40 +#, fuzzy 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." +"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 @@ -4698,7 +4699,7 @@ msgstr "Används" #: plinth/modules/samba/templates/samba.html:72 msgid "vfat partitions are not supported" -msgstr "vfat-partitioner stöds inte" +msgstr "VFAT-partitioner stöds inte" #: plinth/modules/samba/templates/samba.html:103 #, python-format From e217a4c87e961b688e365267b8eeb199a1e5cbab Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 24 Jan 2020 16:04:03 +0000 Subject: [PATCH 59/87] Translated using Weblate (Greek) Currently translated at 100.0% (1163 of 1163 strings) --- plinth/locale/el/LC_MESSAGES/django.po | 85 ++++++++++++-------------- 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 65b732c04..5713cf3b7 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-13 18:08-0500\n" -"PO-Revision-Date: 2020-01-22 23:37+0000\n" +"PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Nektarios Katakis \n" "Language-Team: Greek \n" @@ -595,7 +595,7 @@ msgstr "Κατάργηση αποθετηρίου" #: plinth/modules/backups/views.py:415 msgid "Repository removed. Backups were not deleted." -msgstr "Το αποθετήριο αφαιρέθηκε. Τα εφεδρικά αρχεία δεν διαγράφηκαν." +msgstr "Αποθετήριο που καταργήθηκε. Τα αντίγραφα ασφαλείας δεν διαγράφηκαν." #: plinth/modules/backups/views.py:425 msgid "Unmounting failed!" @@ -4765,7 +4765,7 @@ msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -"Το Samba επιτρέπει την κοινή χρήση αρχείων και φακέλων μεταξύ της Freedombox " +"Το Samba επιτρέπει την κοινή χρήση αρχείων και φακέλων μεταξύ του Freedombox " "και άλλων υπολογιστών στο τοπικό σας δίκτυο." #: plinth/modules/samba/__init__.py:56 @@ -4785,34 +4785,32 @@ msgstr "" #: plinth/modules/samba/__init__.py:61 msgid "Open share - accessible to everyone in your local network." -msgstr "" -"Ανοιχτό κοινόχρηστο διαμέρισμα - ορατό σε όλους τους χρήστες του τοπικού " -"δικτύου." +msgstr "Ανοιχτό μέρισμα - ορατό σε όλους τους χρήστες του τοπικού δικτύου." #: plinth/modules/samba/__init__.py:62 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -"Ομαδικό κοινόχρηστο διαμέρισμα - ορατό μόνο σε χρήστες του Freedombox που " -"είναι στην ομάδα Freedombox-share." +"Ομαδικό μέρισμα - ορατό μόνο σε χρήστες του Freedombox που είναι στην ομάδα " +"Freedombox-share." #: plinth/modules/samba/__init__.py:64 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -"Οικιακό κοινόχρηστο διαμέρισμα - κάθε χρήστης στην ομάδα freedombox-share " -"μπορεί να έχει το δικό του προσωπικό διαμέρισμα στο δίσκο." +"Οικιακό μέρισμα - κάθε χρήστης στην ομάδα freedombox-share μπορεί να έχει το " +"δικό του προσωπικό διαμέρισμα στο δίσκο." #: plinth/modules/samba/__init__.py:68 msgid "Access to the private shares" -msgstr "Πρόσβαση στα ιδιωτικά κοινοχρηστα διαμερίσματα" +msgstr "Πρόσβαση στα ιδιωτικά μερίσματα" #: plinth/modules/samba/templates/samba.html:39 #: plinth/modules/samba/templates/samba.html:50 msgid "Shares" -msgstr "Κοινόχρηστα διαμερίσματα" +msgstr "Μερίσματα" #: plinth/modules/samba/templates/samba.html:41 msgid "" @@ -4844,14 +4842,13 @@ msgid "" msgstr "" "Μπορείτε να βρείτε πρόσθετες πληροφορίες σχετικά με τους δίσκους στη " "διεύθυνση URL αποθηκευτικών χώρων και να " -"ρυθμίσετε τις παραμέτρους πρόσβασης στα κοινόχρηστα διαμερίσματα στη " -"διεύθυνση URL των χρηστών ." +"ρυθμίσετε τις παραμέτρους πρόσβασης στα μερίσματα στη διεύθυνση URL των χρηστών ." #: 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 "" @@ -4859,25 +4856,23 @@ msgid "" "access group and home shares" msgstr "" "Χρήστες που χρειάζεται να ξανα-εισάγουν τον κωδικό τους στη σελίδα αλλαγής " -"κωδικού για να αποκτήσουν πρόσβαση σε ομαδικά και οικιακά κοινόκρηστα " -"διαμερίσματα" +"κωδικού για να αποκτήσουν πρόσβαση σε ομαδικά και οικιακά μερίσματα" #: plinth/modules/samba/templates/samba.html:118 msgid "Unavailable Shares" -msgstr "Με διαθέσιμα κοινόχρηστα διαμερίσματα" +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 "" -"Κοινόχρηστα διαμερίσματα που έχουν ρυθμιστεί αλλά o δίσκος δεν είναι " -"διαθέσιμος. Εάν ο δίσκος συνδεθεί ξανά, η κοινή χρήση θα ενεργοποιηθεί " -"αυτόματα." +"Μερίσματα που έχουν ρυθμιστεί αλλά o δίσκος δεν είναι διαθέσιμος. Εάν ο " +"δίσκος συνδεθεί ξανά, η κοινή χρήση θα ενεργοποιηθεί αυτόματα." #: plinth/modules/samba/templates/samba.html:128 msgid "Share name" -msgstr "Όνομα κοινόχρηστου διαμερίσματος" +msgstr "Όνομα μερίσματος" #: plinth/modules/samba/templates/samba.html:129 msgid "Action" @@ -4885,36 +4880,33 @@ msgstr "Ενέργεια" #: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 msgid "Open Share" -msgstr "Άνοιγμα κοινόχρηστου διαμερίσματος" +msgstr "Aνοικτό μέρισμα" #: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 msgid "Group Share" -msgstr "Ομαδικό κοινόχρηστο διαμέρισμα" +msgstr "Ομαδικό μέρισμα" #: plinth/modules/samba/views.py:63 msgid "Home Share" -msgstr "Οικιακό κοινόχρηστο διαμέρισμα" +msgstr "Οικιακό μέρισμα" #: plinth/modules/samba/views.py:96 msgid "Share enabled." -msgstr "Το κοινοχρηστο διαμέρισμα ενεργοποιήθηκε." +msgstr "Το μέρισμα ενεργοποιήθηκε." #: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "" -"Σφάλμα κατά την ενεργοποίηση κοινόχρηστου διαμερίσματος: {error_message}" +msgstr "Σφάλμα κατά την ενεργοποίηση του μερίσματος: {error_message}" #: plinth/modules/samba/views.py:106 msgid "Share disabled." -msgstr "Το κοινόχρηστο διαμέρισμα απενεργοποιήθηκε." +msgstr "Το μέρισμα απενεργοποιήθηκε." #: plinth/modules/samba/views.py:111 #, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "" -"Σφάλμα κατά την απενεργοποίηση του κοινόχρηστου διαμερίσματος: " -"{error_message}" +msgstr "Σφάλμα κατά την απενεργοποίηση του μερίσματος: {error_message}" #: plinth/modules/searx/__init__.py:41 plinth/modules/searx/manifest.py:24 msgid "Searx" @@ -5227,8 +5219,7 @@ msgstr "" #: plinth/modules/sharing/forms.py:48 msgid "User groups that can read the files in the share" -msgstr "" -"Ομάδες χρηστών που μπορούν να διαβάσουν τα αρχεία στο κοινόχρηστο στοιχείο" +msgstr "Ομάδες χρηστών που μπορούν να διαβάσουν τα αρχεία στο μέρισμα" #: plinth/modules/sharing/forms.py:50 msgid "" @@ -5236,26 +5227,26 @@ msgid "" "share." msgstr "" "Οι χρήστες των επιλεγμένων ομάδων χρηστών θα μπορούν να διαβάσουν τα αρχεία " -"στο κοινόχρηστο στοιχείο." +"στο μέρισμα." #: plinth/modules/sharing/forms.py:67 msgid "A share with this name already exists." -msgstr "Υπάρχει ήδη ένα κοινόχρηστο στοιχείο με αυτό το όνομα." +msgstr "Υπάρχει ήδη ένα μέρισμα με αυτό το όνομα." #: plinth/modules/sharing/forms.py:78 msgid "Shares should be either public or shared with at least one group" msgstr "" -"Τα κοινόχρηστα στοιχεία θα πρέπει να είναι είτε δημόσια είτε να μοιράζονται " -"με τουλάχιστον μία ομάδα" +"Τα μερίσματα θα πρέπει να είναι είτε δημόσια είτε να μοιράζονται με " +"τουλάχιστον μία ομάδα" #: plinth/modules/sharing/templates/sharing.html:39 #: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" -msgstr "Προσθήκη κοινόχρηστου στοιχείου" +msgstr "Προσθήκη μερίσματος" #: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." -msgstr "Δεν έχουν ρυθμιστεί κοινόχρηστα στοιχεία." +msgstr "Δεν έχουν ρυθμιστεί μερίσματα." #: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" @@ -5275,23 +5266,23 @@ msgstr "δημόσια πρόσβαση" #: plinth/modules/sharing/views.py:55 msgid "Share added." -msgstr "Το κοινόχρηστο στοιχείο προστέθηκε." +msgstr "Το μέρισμα προστέθηκε." #: plinth/modules/sharing/views.py:60 msgid "Add Share" -msgstr "Προσθήκη κοινόχρηστου στοιχείου" +msgstr "Προσθήκη μερίσματος" #: plinth/modules/sharing/views.py:75 msgid "Share edited." -msgstr "Το κοινόχρηστο στοιχείο ρυθμίστηκε." +msgstr "Το μέρισμα ρυθμίστηκε." #: plinth/modules/sharing/views.py:80 msgid "Edit Share" -msgstr "Επεξεργασία κοινόχρηστου στοιχείου" +msgstr "Επεξεργασία μερίσματος" #: plinth/modules/sharing/views.py:111 msgid "Share deleted." -msgstr "Το κοινοχρηστο στοιχείο διαγράφηκε." +msgstr "Το μέρισμα διαγράφηκε." #: plinth/modules/snapshot/__init__.py:37 msgid "Storage Snapshots" @@ -5714,7 +5705,7 @@ msgstr "Υποκατάλογος (προαιρετικό)" #: plinth/modules/storage/forms.py:154 msgid "Share" -msgstr "Κοινόχρηστο διαμέρισμα" +msgstr "Μέρισμα" #: plinth/modules/storage/forms.py:162 msgid "Other directory (specify below)" From 8e698987de35ffcb75b49f477dbf7b4656d5c061 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Fri, 17 Jan 2020 13:15:27 +0200 Subject: [PATCH 60/87] deluge: Allow to set a download directory - add directory selection form to the app configuration page - add debian-deluged user to the freedombox-share group - storage: new validator parameter check-creatable (because deluged is able to create subdirectories) Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/deluge | 34 ++++++++++ actions/storage | 29 ++++++-- plinth/modules/deluge/__init__.py | 5 +- plinth/modules/deluge/forms.py | 37 +++++++++++ plinth/modules/deluge/urls.py | 10 +-- plinth/modules/deluge/views.py | 69 ++++++++++++++++++++ plinth/modules/storage/forms.py | 10 ++- plinth/modules/storage/tests/test_storage.py | 18 ++++- 8 files changed, 195 insertions(+), 17 deletions(-) create mode 100644 plinth/modules/deluge/forms.py create mode 100644 plinth/modules/deluge/views.py diff --git a/actions/deluge b/actions/deluge index a3f7436a9..18585bd22 100755 --- a/actions/deluge +++ b/actions/deluge @@ -20,6 +20,7 @@ Configuration helper for BitTorrent web client. """ import argparse +import json import os import shutil import subprocess @@ -80,6 +81,16 @@ def parse_arguments(): subparsers.add_parser('setup', help='Setup deluge') + subparsers.add_parser('get-configuration', + help='Return the current configuration') + + subparser = subparsers.add_parser('set-configuration', + help='Set the configuration parameter') + subparser.add_argument('parameter', + help='Name of the configuration parameter') + subparser.add_argument('value', + help='Value of the configuration parameter') + subparsers.required = True return parser.parse_args() @@ -141,6 +152,29 @@ def _set_deluged_daemon_options(): aug.save() +def subcommand_get_configuration(_): + """Return the current deluged configuration in JSON format.""" + deluged_conf_file = os.path.join(DELUGE_CONF_DIR, 'core.conf') + if config is None: + script = 'from deluge import config;\ + conf = config.Config(filename="{0}");\ + print(conf["download_location"])'.format(deluged_conf_file) + output = subprocess.check_output(['python2', '-c', script]).decode() + download_location = output.strip() + else: + conf = config.Config(filename=deluged_conf_file) + download_location = conf["download_location"] + + print(json.dumps({'download_location': download_location})) + + +def subcommand_set_configuration(arguments): + """Set the deluged configuration.""" + if arguments.parameter != 'download_location': + return + _set_configuration('core.conf', arguments.parameter, arguments.value) + + def subcommand_setup(_): """Perform initial setup for deluge.""" diff --git a/actions/storage b/actions/storage index 1147d5104..181f431f7 100755 --- a/actions/storage +++ b/actions/storage @@ -56,6 +56,9 @@ def parse_arguments(): help='Validate a directory') subparser.add_argument('--path', help='Path of the directory', required=True) + subparser.add_argument('--check-creatable', required=False, default=False, + action='store_true', + help='Check that the directory is creatable') subparser.add_argument('--check-writable', required=False, default=False, action='store_true', help='Check that the directory is writable') @@ -329,14 +332,32 @@ def subcommand_usage_info(_): def subcommand_validate_directory(arguments): """Validate a directory""" directory = arguments.path - if not os.path.exists(directory): - print('ValidationError: 1') + + def part_exists(path): + """Returns part of the path that exists.""" + if not path or os.path.exists(path): + return path + return part_exists(os.path.dirname(path)) + + if arguments.check_creatable: + directory = part_exists(directory) + if not directory: + directory = '.' + else: + if not os.path.exists(directory): + # doesn't exist + print('ValidationError: 1') + if not os.path.isdir(directory): + # is not a directory print('ValidationError: 2') if not os.access(directory, os.R_OK): + # is not readable print('ValidationError: 3') - if arguments.check_writable and not os.access(directory, os.W_OK): - print('ValidationError: 4') + if arguments.check_writable or arguments.check_creatable: + if not os.access(directory, os.W_OK): + # is not writable + print('ValidationError: 4') def main(): diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 320e46c0d..5e3981d3c 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -26,11 +26,11 @@ 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 +from plinth.modules.users import register_group, add_user_to_share_group from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 5 +version = 6 managed_services = ['deluged', 'deluge-web'] @@ -109,4 +109,5 @@ def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) helper.call('post', actions.superuser_run, 'deluge', ['setup']) + add_user_to_share_group(reserved_usernames[0]) helper.call('post', app.enable) diff --git a/plinth/modules/deluge/forms.py b/plinth/modules/deluge/forms.py new file mode 100644 index 000000000..b786a803e --- /dev/null +++ b/plinth/modules/deluge/forms.py @@ -0,0 +1,37 @@ +# +# 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 . +# +""" +Forms for Deluge app. +""" + +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules.deluge import reserved_usernames +from plinth.modules.storage.forms import (DirectorySelectForm, + DirectoryValidator) + + +class DelugeForm(DirectorySelectForm): + """Deluge configuration form""" + + def __init__(self, *args, **kw): + validator = DirectoryValidator(username=reserved_usernames[0], + check_creatable=True) + super(DelugeForm, self).__init__( + title=_('Download directory'), + default='/var/lib/deluged/Downloads/', validator=validator, *args, + **kw) diff --git a/plinth/modules/deluge/urls.py b/plinth/modules/deluge/urls.py index 4da1fa6dc..8b4a72fb6 100644 --- a/plinth/modules/deluge/urls.py +++ b/plinth/modules/deluge/urls.py @@ -20,14 +20,8 @@ URLs for the Deluge module. from django.conf.urls import url -from plinth.modules import deluge -from plinth.views import AppView +from .views import DelugeAppView urlpatterns = [ - url( - r'^apps/deluge/$', - AppView.as_view(name=deluge.name, description=deluge.description, - clients=deluge.clients, app_id='deluge', - manual_page=deluge.manual_page, - icon_filename=deluge.icon_filename), name='index'), + url(r'^apps/deluge/$', DelugeAppView.as_view(), name='index') ] diff --git a/plinth/modules/deluge/views.py b/plinth/modules/deluge/views.py new file mode 100644 index 000000000..1a15149a9 --- /dev/null +++ b/plinth/modules/deluge/views.py @@ -0,0 +1,69 @@ +# +# 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 . +# +""" +Django views for Deluge. +""" + +import json +import os + +from django.contrib import messages +from django.utils.translation import ugettext as _ + +from plinth import actions, views +from plinth.modules import deluge + +from .forms import DelugeForm + + +class DelugeAppView(views.AppView): + """Serve configuration page.""" + clients = deluge.clients + name = deluge.name + description = deluge.description + diagnostics_module_name = 'deluge' + form_class = DelugeForm + app_id = 'deluge' + manual_page = deluge.manual_page + icon_filename = deluge.icon_filename + + def get_initial(self): + """Get current Deluge server settings.""" + status = super().get_initial() + configuration = json.loads( + actions.superuser_run('deluge', ['get-configuration'])) + status['storage_path'] = os.path.normpath( + configuration['download_location']) + return status + + def form_valid(self, form): + """Apply the changes submitted in the form.""" + old_status = form.initial + new_status = form.cleaned_data + + # don't change the configuration if the application was disabled + if new_status['is_enabled'] or not old_status['is_enabled']: + if old_status['storage_path'] != new_status['storage_path']: + new_configuration = [ + 'download_location', new_status['storage_path'] + ] + + actions.superuser_run( + 'deluge', ['set-configuration'] + new_configuration) + messages.success(self.request, _('Configuration updated')) + + return super().form_valid(form) diff --git a/plinth/modules/storage/forms.py b/plinth/modules/storage/forms.py index a22e48195..87dd85d1c 100644 --- a/plinth/modules/storage/forms.py +++ b/plinth/modules/storage/forms.py @@ -60,14 +60,18 @@ def is_module_enabled(name): class DirectoryValidator: username = None check_writable = False + check_creatable = False add_user_to_share_group = False service_to_restart = None - def __init__(self, username=None, check_writable=None): + def __init__(self, username=None, check_writable=None, + check_creatable=None): if username is not None: self.username = username if check_writable is not None: self.check_writable = check_writable + if check_creatable is not None: + self.check_creatable = check_creatable def __call__(self, value): """Validate a directory.""" @@ -75,7 +79,9 @@ class DirectoryValidator: raise ValidationError(_('Invalid directory name.'), 'invalid') command = ['validate-directory', '--path', value] - if self.check_writable: + if self.check_creatable: + command.append('--check-creatable') + elif self.check_writable: command.append('--check-writable') if self.username: diff --git a/plinth/modules/storage/tests/test_storage.py b/plinth/modules/storage/tests/test_storage.py index 3e8e10461..9e4a99974 100644 --- a/plinth/modules/storage/tests/test_storage.py +++ b/plinth/modules/storage/tests/test_storage.py @@ -247,11 +247,14 @@ class TestActions: subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True) - def assert_validate_directory(self, path, error, check_writable=False): + def assert_validate_directory(self, path, error, check_writable=False, + check_creatable=False): """Perform directory validation checks.""" action_command = ['storage', 'validate-directory', '--path', path] if check_writable: action_command += ['--check-writable'] + if check_creatable: + action_command += ['--check-creatable'] proc = self.call_action(action_command, stderr=subprocess.PIPE, stdout=subprocess.PIPE) output = proc.stdout.decode() @@ -291,3 +294,16 @@ class TestActions: """Test that directory writable validation returns expected output.""" self.assert_validate_directory(directory['path'], directory['error'], check_writable=True) + + @pytest.mark.usefixtures('needs_not_root') + @pytest.mark.parametrize('directory', [{ + 'path': '/var/lib/plinth_storage_test_not_exists', + 'error': '4' + }, { + 'path': '/tmp/plint_storage_test_not_exists', + 'error': '' + }]) + def test_validate_directory_creatable(self, directory): + """Test that directory creatable validation returns expected output.""" + self.assert_validate_directory(directory['path'], directory['error'], + check_creatable=True) From 420e3846a01685c894342980c5b7f23fe47ee8a4 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Tue, 21 Jan 2020 16:50:54 +0200 Subject: [PATCH 61/87] deluge: Fix installation failure on slow machine Deluge setup now waits longer after first startup to make sure services are fully started. Fixes #1764 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/deluge | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/deluge b/actions/deluge index 18585bd22..ebd886eab 100755 --- a/actions/deluge +++ b/actions/deluge @@ -189,7 +189,7 @@ def subcommand_setup(_): action_utils.service_restart('deluge-web') action_utils.service_restart('deluged') # wait processes to start - time.sleep(5) + time.sleep(10) # configure deluge-web to autoconnect to the default deluged daemon, also # restarts deluged and deluge-web services again to create config files From ce906b1fef27839b51f029ad5ff8460994e07dfb Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 16:07:13 +0530 Subject: [PATCH 62/87] functional-tests: Login only once per session Signed-off-by: Joseph Nuthalapati [sunil: Fix fixture name for searx] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- .../step_definitions/application.py | 432 +++++++++--------- .../step_definitions/interface.py | 59 +-- functional_tests/step_definitions/service.py | 25 +- functional_tests/step_definitions/site.py | 154 ++++--- functional_tests/step_definitions/system.py | 210 ++++----- functional_tests/support/interface.py | 7 +- functional_tests/support/site.py | 10 +- 7 files changed, 467 insertions(+), 430 deletions(-) diff --git a/functional_tests/step_definitions/application.py b/functional_tests/step_definitions/application.py index 293057173..7ed5750f3 100644 --- a/functional_tests/step_definitions/application.py +++ b/functional_tests/step_definitions/application.py @@ -23,488 +23,504 @@ from support import application @given(parsers.parse('the {app_name:w} application is installed')) -def application_is_installed(browser, app_name): - application.install(browser, app_name) - assert (application.is_installed(browser, app_name)) +def application_is_installed(session_browser, app_name): + application.install(session_browser, app_name) + assert (application.is_installed(session_browser, app_name)) @given(parsers.parse('the {app_name:w} application is enabled')) -def application_is_enabled(browser, app_name): - application.enable(browser, app_name) +def application_is_enabled(session_browser, app_name): + application.enable(session_browser, app_name) @given(parsers.parse('the {app_name:w} application is disabled')) -def application_is_disabled(browser, app_name): - application.disable(browser, app_name) +def application_is_disabled(session_browser, app_name): + application.disable(session_browser, app_name) @given(parsers.parse('the network time application is enabled')) -def ntp_is_enabled(browser): - application.enable(browser, 'ntp') +def ntp_is_enabled(session_browser): + application.enable(session_browser, 'ntp') @given(parsers.parse('the network time application is disabled')) -def ntp_is_disabled(browser): - application.disable(browser, 'ntp') +def ntp_is_disabled(session_browser): + application.disable(session_browser, 'ntp') @when(parsers.parse('I set the time zone to {time_zone:S}')) -def time_zone_set(browser, time_zone): - application.time_zone_set(browser, time_zone) +def time_zone_set(session_browser, time_zone): + application.time_zone_set(session_browser, time_zone) @then(parsers.parse('the time zone should be {time_zone:S}')) -def time_zone_assert(browser, time_zone): - assert time_zone == application.time_zone_get(browser) +def time_zone_assert(session_browser, time_zone): + assert time_zone == application.time_zone_get(session_browser) @given(parsers.parse('the service discovery application is enabled')) -def avahi_is_enabled(browser): - application.enable(browser, 'avahi') +def avahi_is_enabled(session_browser): + application.enable(session_browser, 'avahi') @given(parsers.parse('the service discovery application is disabled')) -def avahi_is_disabled(browser): - application.disable(browser, 'avahi') +def avahi_is_disabled(session_browser): + application.disable(session_browser, 'avahi') @when(parsers.parse('I enable the {app_name:w} application')) -def enable_application(browser, app_name): - application.enable(browser, app_name) +def enable_application(session_browser, app_name): + application.enable(session_browser, app_name) @when(parsers.parse('I disable the {app_name:w} application')) -def disable_application(browser, app_name): - application.disable(browser, app_name) +def disable_application(session_browser, app_name): + application.disable(session_browser, app_name) @when(parsers.parse('I enable the network time application')) -def enable_ntp(browser): - application.enable(browser, 'ntp') +def enable_ntp(session_browser): + application.enable(session_browser, 'ntp') @when(parsers.parse('I disable the network time application')) -def disable_ntp(browser): - application.disable(browser, 'ntp') +def disable_ntp(session_browser): + application.disable(session_browser, 'ntp') @when(parsers.parse('I enable the service discovery application')) -def enable_avahi(browser): - application.enable(browser, 'avahi') +def enable_avahi(session_browser): + application.enable(session_browser, 'avahi') @when(parsers.parse('I disable the service discovery application')) -def disable_avahi(browser): - application.disable(browser, 'avahi') +def disable_avahi(session_browser): + application.disable(session_browser, 'avahi') @given( parsers.parse('the domain name for {app_name:w} is set to {domain_name:S}') ) -def select_domain_name(browser, app_name, domain_name): - application.select_domain_name(browser, app_name, domain_name) +def select_domain_name(session_browser, app_name, domain_name): + application.select_domain_name(session_browser, app_name, domain_name) @given('the shadowsocks application is configured') -def configure_shadowsocks(browser): - application.configure_shadowsocks(browser, 'example.com', 'fakepassword') +def configure_shadowsocks(session_browser): + application.configure_shadowsocks(session_browser, 'example.com', + 'fakepassword') @when( parsers.parse( 'I configure shadowsocks with server {server:S} and password {password:w}' )) -def configure_shadowsocks_with_details(browser, server, password): - application.configure_shadowsocks(browser, server, password) +def configure_shadowsocks_with_details(session_browser, server, password): + application.configure_shadowsocks(session_browser, server, password) @then( parsers.parse( 'shadowsocks should be configured with server {server:S} and password {password:w}' )) -def assert_shadowsocks_configuration(browser, server, password): - assert (server, - password) == application.shadowsocks_get_configuration(browser) +def assert_shadowsocks_configuration(session_browser, server, password): + assert ( + server, + password) == application.shadowsocks_get_configuration(session_browser) @when(parsers.parse('I modify the maximum file size of coquelicot to {size:d}') ) -def modify_max_file_size(browser, size): - application.modify_max_file_size(browser, size) +def modify_max_file_size(session_browser, size): + application.modify_max_file_size(session_browser, size) @then(parsers.parse('the maximum file size of coquelicot should be {size:d}')) -def assert_max_file_size(browser, size): - assert application.get_max_file_size(browser) == size +def assert_max_file_size(session_browser, size): + assert application.get_max_file_size(session_browser) == size @when(parsers.parse('I modify the coquelicot upload password to {password:w}')) -def modify_upload_password(browser, password): - application.modify_upload_password(browser, password) +def modify_upload_password(session_browser, password): + application.modify_upload_password(session_browser, password) @given(parsers.parse('share {name:w} is not available')) -def remove_share(browser, name): - application.remove_share(browser, name) +def remove_share(session_browser, name): + application.remove_share(session_browser, name) @when(parsers.parse('I add a share {name:w} from path {path} for {group:w}')) -def add_share(browser, name, path, group): - application.add_share(browser, name, path, group) +def add_share(session_browser, name, path, group): + application.add_share(session_browser, name, path, group) @when( parsers.parse( 'I edit share {old_name:w} to {new_name:w} from path {path} for {group:w}' )) -def edit_share(browser, old_name, new_name, path, group): - application.edit_share(browser, old_name, new_name, path, group) +def edit_share(session_browser, old_name, new_name, path, group): + application.edit_share(session_browser, old_name, new_name, path, group) @when(parsers.parse('I remove share {name:w}')) -def remove_share2(browser, name): - application.remove_share(browser, name) +def remove_share2(session_browser, name): + application.remove_share(session_browser, name) @when(parsers.parse('I edit share {name:w} to be public')) -def edit_share_public_access(browser, name): - application.make_share_public(browser, name) +def edit_share_public_access(session_browser, name): + application.make_share_public(session_browser, name) @then( parsers.parse( 'the share {name:w} should be listed from path {path} for {group:w}')) -def verify_share(browser, name, path, group): - application.verify_share(browser, name, path, group) +def verify_share(session_browser, name, path, group): + application.verify_share(session_browser, name, path, group) @then(parsers.parse('the share {name:w} should not be listed')) -def verify_invalid_share(browser, name): +def verify_invalid_share(session_browser, name): with pytest.raises(splinter.exceptions.ElementDoesNotExist): - application.get_share(browser, name) + application.get_share(session_browser, name) @then(parsers.parse('the share {name:w} should be accessible')) -def access_share(browser, name): - application.access_share(browser, name) +def access_share(session_browser, name): + application.access_share(session_browser, name) @then(parsers.parse('the share {name:w} should not exist')) -def verify_nonexistant_share(browser, name): - application.verify_nonexistant_share(browser, name) +def verify_nonexistant_share(session_browser, name): + application.verify_nonexistant_share(session_browser, name) @then(parsers.parse('the share {name:w} should not be accessible')) -def verify_inaccessible_share(browser, name): - application.verify_inaccessible_share(browser, name) +def verify_inaccessible_share(session_browser, name): + application.verify_inaccessible_share(session_browser, name) @when(parsers.parse('I enable mediawiki public registrations')) -def enable_mediawiki_public_registrations(browser): - application.enable_mediawiki_public_registrations(browser) +def enable_mediawiki_public_registrations(session_browser): + application.enable_mediawiki_public_registrations(session_browser) @when(parsers.parse('I disable mediawiki public registrations')) -def disable_mediawiki_public_registrations(browser): - application.disable_mediawiki_public_registrations(browser) +def disable_mediawiki_public_registrations(session_browser): + application.disable_mediawiki_public_registrations(session_browser) @when(parsers.parse('I enable mediawiki private mode')) -def enable_mediawiki_private_mode(browser): - application.enable_mediawiki_private_mode(browser) +def enable_mediawiki_private_mode(session_browser): + application.enable_mediawiki_private_mode(session_browser) @when(parsers.parse('I disable mediawiki private mode')) -def disable_mediawiki_private_mode(browser): - application.disable_mediawiki_private_mode(browser) +def disable_mediawiki_private_mode(session_browser): + application.disable_mediawiki_private_mode(session_browser) @when(parsers.parse('I set the mediawiki admin password to {password}')) -def set_mediawiki_admin_password(browser, password): - application.set_mediawiki_admin_password(browser, password) +def set_mediawiki_admin_password(session_browser, password): + application.set_mediawiki_admin_password(session_browser, password) @when(parsers.parse('I enable message archive management')) -def mediawiki_enable_archive_management(browser): - application.enable_ejabberd_message_archive_management(browser) +def ejabberd_enable_archive_management(session_browser): + application.enable_ejabberd_message_archive_management(session_browser) @when(parsers.parse('I disable message archive management')) -def mediawiki_disable_archive_management(browser): - application.disable_ejabberd_message_archive_management(browser) +def ejabberd_disable_archive_management(session_browser): + application.disable_ejabberd_message_archive_management(session_browser) @when('there is an ikiwiki wiki') -def ikiwiki_create_wiki_if_needed(browser): - application.ikiwiki_create_wiki_if_needed(browser) +def ikiwiki_create_wiki_if_needed(session_browser): + application.ikiwiki_create_wiki_if_needed(session_browser) @when('I delete the ikiwiki wiki') -def ikiwiki_delete_wiki(browser): - application.ikiwiki_delete_wiki(browser) +def ikiwiki_delete_wiki(session_browser): + application.ikiwiki_delete_wiki(session_browser) @then('the ikiwiki wiki should be restored') -def ikiwiki_should_exist(browser): - assert application.ikiwiki_wiki_exists(browser) +def ikiwiki_should_exist(session_browser): + assert application.ikiwiki_wiki_exists(session_browser) @given('I have added a contact to my roster') -def ejabberd_add_contact(browser): - application.ejabberd_add_contact(browser) +def ejabberd_add_contact(session_browser): + application.ejabberd_add_contact(session_browser) @when('I delete the contact from my roster') -def ejabberd_delete_contact(browser): - application.ejabberd_delete_contact(browser) +def ejabberd_delete_contact(session_browser): + application.ejabberd_delete_contact(session_browser) @then('I should have a contact on my roster') -def ejabberd_should_have_contact(browser): - assert application.ejabberd_has_contact(browser) +def ejabberd_should_have_contact(session_browser): + assert application.ejabberd_has_contact(session_browser) @given(parsers.parse('tor relay is {enabled:w}')) -def tor_given_relay_enable(browser, enabled): - application.tor_feature_enable(browser, 'relay', enabled) +def tor_given_relay_enable(session_browser, enabled): + application.tor_feature_enable(session_browser, 'relay', enabled) @when(parsers.parse('I {enable:w} tor relay')) -def tor_relay_enable(browser, enable): - application.tor_feature_enable(browser, 'relay', enable) +def tor_relay_enable(session_browser, enable): + application.tor_feature_enable(session_browser, 'relay', enable) @then(parsers.parse('tor relay should be {enabled:w}')) -def tor_assert_relay_enabled(browser, enabled): - application.tor_assert_feature_enabled(browser, 'relay', enabled) +def tor_assert_relay_enabled(session_browser, enabled): + application.tor_assert_feature_enabled(session_browser, 'relay', enabled) @then(parsers.parse('tor {port_name:w} port should be displayed')) -def tor_assert_port_displayed(browser, port_name): - assert port_name in application.tor_get_relay_ports(browser) +def tor_assert_port_displayed(session_browser, port_name): + assert port_name in application.tor_get_relay_ports(session_browser) @given(parsers.parse('tor bridge relay is {enabled:w}')) -def tor_given_bridge_relay_enable(browser, enabled): - application.tor_feature_enable(browser, 'bridge-relay', enabled) +def tor_given_bridge_relay_enable(session_browser, enabled): + application.tor_feature_enable(session_browser, 'bridge-relay', enabled) @when(parsers.parse('I {enable:w} tor bridge relay')) -def tor_bridge_relay_enable(browser, enable): - application.tor_feature_enable(browser, 'bridge-relay', enable) +def tor_bridge_relay_enable(session_browser, enable): + application.tor_feature_enable(session_browser, 'bridge-relay', enable) @then(parsers.parse('tor bridge relay should be {enabled:w}')) -def tor_assert_bridge_relay_enabled(browser, enabled): - application.tor_assert_feature_enabled(browser, 'bridge-relay', enabled) +def tor_assert_bridge_relay_enabled(session_browser, enabled): + application.tor_assert_feature_enabled(session_browser, 'bridge-relay', + enabled) @given(parsers.parse('tor hidden services are {enabled:w}')) -def tor_given_hidden_services_enable(browser, enabled): - application.tor_feature_enable(browser, 'hidden-services', enabled) +def tor_given_hidden_services_enable(session_browser, enabled): + application.tor_feature_enable(session_browser, 'hidden-services', enabled) @when(parsers.parse('I {enable:w} tor hidden services')) -def tor_hidden_services_enable(browser, enable): - application.tor_feature_enable(browser, 'hidden-services', enable) +def tor_hidden_services_enable(session_browser, enable): + application.tor_feature_enable(session_browser, 'hidden-services', enable) @then(parsers.parse('tor hidden services should be {enabled:w}')) -def tor_assert_hidden_services_enabled(browser, enabled): - application.tor_assert_feature_enabled(browser, 'hidden-services', enabled) +def tor_assert_hidden_services_enabled(session_browser, enabled): + application.tor_assert_feature_enabled(session_browser, 'hidden-services', + enabled) @then(parsers.parse('tor hidden services information should be displayed')) -def tor_assert_hidden_services(browser): - application.tor_assert_hidden_services(browser) +def tor_assert_hidden_services(session_browser): + application.tor_assert_hidden_services(session_browser) @given(parsers.parse('download software packages over tor is {enabled:w}')) -def tor_given_download_software_over_tor_enable(browser, enabled): - application.tor_feature_enable(browser, 'software', enabled) +def tor_given_download_software_over_tor_enable(session_browser, enabled): + application.tor_feature_enable(session_browser, 'software', enabled) @when(parsers.parse('I {enable:w} download software packages over tor')) -def tor_download_software_over_tor_enable(browser, enable): - application.tor_feature_enable(browser, 'software', enable) +def tor_download_software_over_tor_enable(session_browser, enable): + application.tor_feature_enable(session_browser, 'software', enable) @then( parsers.parse('download software packages over tor should be {enabled:w}')) -def tor_assert_download_software_over_tor(browser, enabled): - application.tor_assert_feature_enabled(browser, 'software', enabled) +def tor_assert_download_software_over_tor(session_browser, enabled): + application.tor_assert_feature_enabled(session_browser, 'software', + enabled) @then( parsers.parse( '{domain:S} should be a tahoe {introducer_type:w} introducer')) -def tahoe_assert_introducer(browser, domain, introducer_type): - assert application.tahoe_get_introducer(browser, domain, introducer_type) +def tahoe_assert_introducer(session_browser, domain, introducer_type): + assert application.tahoe_get_introducer(session_browser, domain, + introducer_type) @then( parsers.parse( '{domain:S} should not be a tahoe {introducer_type:w} introducer')) -def tahoe_assert_not_introducer(browser, domain, introducer_type): - assert not application.tahoe_get_introducer(browser, domain, +def tahoe_assert_not_introducer(session_browser, domain, introducer_type): + assert not application.tahoe_get_introducer(session_browser, domain, introducer_type) @given(parsers.parse('{domain:S} is not a tahoe introducer')) -def tahoe_given_remove_introducer(browser, domain): - if application.tahoe_get_introducer(browser, domain, 'connected'): - application.tahoe_remove_introducer(browser, domain) +def tahoe_given_remove_introducer(session_browser, domain): + if application.tahoe_get_introducer(session_browser, domain, 'connected'): + application.tahoe_remove_introducer(session_browser, domain) @when(parsers.parse('I add {domain:S} as a tahoe introducer')) -def tahoe_add_introducer(browser, domain): - application.tahoe_add_introducer(browser, domain) +def tahoe_add_introducer(session_browser, domain): + application.tahoe_add_introducer(session_browser, domain) @given(parsers.parse('{domain:S} is a tahoe introducer')) -def tahoe_given_add_introducer(browser, domain): - if not application.tahoe_get_introducer(browser, domain, 'connected'): - application.tahoe_add_introducer(browser, domain) +def tahoe_given_add_introducer(session_browser, domain): + if not application.tahoe_get_introducer(session_browser, domain, + 'connected'): + application.tahoe_add_introducer(session_browser, domain) @when(parsers.parse('I remove {domain:S} as a tahoe introducer')) -def tahoe_remove_introducer(browser, domain): - application.tahoe_remove_introducer(browser, domain) +def tahoe_remove_introducer(session_browser, domain): + application.tahoe_remove_introducer(session_browser, domain) @given('the access rights are set to "only the owner can view or make changes"' ) -def radicale_given_owner_only(browser): - application.radicale_set_access_rights(browser, 'owner_only') +def radicale_given_owner_only(session_browser): + application.radicale_set_access_rights(session_browser, 'owner_only') @given( 'the access rights are set to "any user can view, but only the owner can make changes"' ) -def radicale_given_owner_write(browser): - application.radicale_set_access_rights(browser, 'owner_write') +def radicale_given_owner_write(session_browser): + application.radicale_set_access_rights(session_browser, 'owner_write') @given('the access rights are set to "any user can view or make changes"') -def radicale_given_authenticated(browser): - application.radicale_set_access_rights(browser, 'authenticated') +def radicale_given_authenticated(session_browser): + application.radicale_set_access_rights(session_browser, 'authenticated') @when('I change the access rights to "only the owner can view or make changes"' ) -def radicale_set_owner_only(browser): - application.radicale_set_access_rights(browser, 'owner_only') +def radicale_set_owner_only(session_browser): + application.radicale_set_access_rights(session_browser, 'owner_only') @when( 'I change the access rights to "any user can view, but only the owner can make changes"' ) -def radicale_set_owner_write(browser): - application.radicale_set_access_rights(browser, 'owner_write') +def radicale_set_owner_write(session_browser): + application.radicale_set_access_rights(session_browser, 'owner_write') @when('I change the access rights to "any user can view or make changes"') -def radicale_set_authenticated(browser): - application.radicale_set_access_rights(browser, 'authenticated') +def radicale_set_authenticated(session_browser): + application.radicale_set_access_rights(session_browser, 'authenticated') @then('the access rights should be "only the owner can view or make changes"') -def radicale_check_owner_only(browser): - assert application.radicale_get_access_rights(browser) == 'owner_only' +def radicale_check_owner_only(session_browser): + assert application.radicale_get_access_rights( + session_browser) == 'owner_only' @then( 'the access rights should be "any user can view, but only the owner can make changes"' ) -def radicale_check_owner_write(browser): - assert application.radicale_get_access_rights(browser) == 'owner_write' +def radicale_check_owner_write(session_browser): + assert application.radicale_get_access_rights( + session_browser) == 'owner_write' @then('the access rights should be "any user can view or make changes"') -def radicale_check_authenticated(browser): - assert application.radicale_get_access_rights(browser) == 'authenticated' +def radicale_check_authenticated(session_browser): + assert application.radicale_get_access_rights( + session_browser) == 'authenticated' @given(parsers.parse('the openvpn application is setup')) -def openvpn_setup(browser): - application.openvpn_setup(browser) +def openvpn_setup(session_browser): + application.openvpn_setup(session_browser) @given('I download openvpn profile') -def openvpn_download_profile(browser): - return application.openvpn_download_profile(browser) +def openvpn_download_profile(session_browser): + return application.openvpn_download_profile(session_browser) @then('the openvpn profile should be downloadable') -def openvpn_profile_downloadable(browser): - application.openvpn_download_profile(browser) +def openvpn_profile_downloadable(session_browser): + application.openvpn_download_profile(session_browser) @then('the openvpn profile downloaded should be same as before') -def openvpn_profile_download_compare(browser, openvpn_download_profile): - new_profile = application.openvpn_download_profile(browser) +def openvpn_profile_download_compare(session_browser, + openvpn_download_profile): + new_profile = application.openvpn_download_profile(session_browser) assert openvpn_download_profile == new_profile @given('public access is enabled in searx') -def searx_public_access_enabled(browser): - application.searx_enable_public_access(browser) +def searx_public_access_enabled(session_browser): + application.searx_enable_public_access(session_browser) @when('I enable public access in searx') -def searx_enable_public_access(browser): - application.searx_enable_public_access(browser) +def searx_enable_public_access(session_browser): + application.searx_enable_public_access(session_browser) @when('I disable public access in searx') -def searx_disable_public_access(browser): - application.searx_disable_public_access(browser) +def searx_disable_public_access(session_browser): + application.searx_disable_public_access(session_browser) @then(parsers.parse('{app_name:w} app should be visible on the front page')) -def app_visible_on_front_page(browser, app_name): - shortcuts = application.find_on_front_page(browser, app_name) +def app_visible_on_front_page(session_browser, app_name): + shortcuts = application.find_on_front_page(session_browser, app_name) assert len(shortcuts) == 1 @then(parsers.parse('{app_name:w} app should not be visible on the front page') ) -def app_not_visible_on_front_page(browser, app_name): - shortcuts = application.find_on_front_page(browser, app_name) +def app_not_visible_on_front_page(session_browser, app_name): + shortcuts = application.find_on_front_page(session_browser, app_name) assert len(shortcuts) == 0 @given('a public repository') @given('a repository') @given('at least one repository exists') -def gitweb_repo(browser): - application.gitweb_create_repo(browser, 'Test-repo', 'public', True) +def gitweb_repo(session_browser): + application.gitweb_create_repo(session_browser, 'Test-repo', 'public', + True) @given('a private repository') -def gitweb_private_repo(browser): - application.gitweb_create_repo(browser, 'Test-repo', 'private', True) +def gitweb_private_repo(session_browser): + application.gitweb_create_repo(session_browser, 'Test-repo', 'private', + True) @given('both public and private repositories exist') -def gitweb_public_and_private_repo(browser): - application.gitweb_create_repo(browser, 'Test-repo', 'public', True) - application.gitweb_create_repo(browser, 'Test-repo2', 'private', True) +def gitweb_public_and_private_repo(session_browser): + application.gitweb_create_repo(session_browser, 'Test-repo', 'public', + True) + application.gitweb_create_repo(session_browser, 'Test-repo2', 'private', + True) @given(parsers.parse("a {access:w} repository that doesn't exist")) -def gitweb_nonexistent_repo(browser, access): - application.gitweb_delete_repo(browser, 'Test-repo', ignore_missing=True) +def gitweb_nonexistent_repo(session_browser, access): + application.gitweb_delete_repo(session_browser, 'Test-repo', + ignore_missing=True) return dict(access=access) @given('all repositories are private') -def gitweb_all_repositories_private(browser): - application.gitweb_set_all_repos_private(browser) +def gitweb_all_repositories_private(session_browser): + application.gitweb_set_all_repos_private(session_browser) @given(parsers.parse('a repository metadata:\n{metadata}')) -def gitweb_repo_metadata(browser, metadata): +def gitweb_repo_metadata(session_browser, metadata): metadata_dict = {} for item in metadata.split('\n'): item = item.split(': ') @@ -513,18 +529,18 @@ def gitweb_repo_metadata(browser, metadata): @when('I create the repository') -def gitweb_create_repo(browser, access): - application.gitweb_create_repo(browser, 'Test-repo', access) +def gitweb_create_repo(session_browser, access): + application.gitweb_create_repo(session_browser, 'Test-repo', access) @when('I delete the repository') -def gitweb_delete_repo(browser): - application.gitweb_delete_repo(browser, 'Test-repo') +def gitweb_delete_repo(session_browser): + application.gitweb_delete_repo(session_browser, 'Test-repo') @when('I set the metadata of the repository') -def gitweb_edit_repo_metadata(browser, gitweb_repo_metadata): - application.gitweb_edit_repo_metadata(browser, 'Test-repo', +def gitweb_edit_repo_metadata(session_browser, gitweb_repo_metadata): + application.gitweb_edit_repo_metadata(session_browser, 'Test-repo', gitweb_repo_metadata) @@ -535,36 +551,38 @@ def gitweb_using_git_client(): @then('the repository should be restored') @then('the repository should be listed as a public') -def gitweb_repo_should_exists(browser): - assert application.gitweb_repo_exists(browser, 'Test-repo', +def gitweb_repo_should_exists(session_browser): + assert application.gitweb_repo_exists(session_browser, 'Test-repo', access='public') @then('the repository should be listed as a private') -def gitweb_private_repo_should_exists(browser): - assert application.gitweb_repo_exists(browser, 'Test-repo', 'private') +def gitweb_private_repo_should_exists(session_browser): + assert application.gitweb_repo_exists(session_browser, 'Test-repo', + 'private') @then('the repository should not be listed') -def gitweb_repo_should_not_exist(browser, gitweb_repo): - assert not application.gitweb_repo_exists(browser, gitweb_repo) +def gitweb_repo_should_not_exist(session_browser, gitweb_repo): + assert not application.gitweb_repo_exists(session_browser, gitweb_repo) @then('the public repository should be listed on gitweb') @then('the repository should be listed on gitweb') -def gitweb_repo_should_exist_on_gitweb(browser): - assert application.gitweb_site_repo_exists(browser, 'Test-repo') +def gitweb_repo_should_exist_on_gitweb(session_browser): + assert application.gitweb_site_repo_exists(session_browser, 'Test-repo') @then('the private repository should not be listed on gitweb') -def gitweb_private_repo_should_exists_on_gitweb(browser): - assert not application.gitweb_site_repo_exists(browser, 'Test-repo2') +def gitweb_private_repo_should_exists_on_gitweb(session_browser): + assert not application.gitweb_site_repo_exists(session_browser, + 'Test-repo2') @then('the metadata of the repository should be as set') -def gitweb_repo_metadata_should_match(browser, gitweb_repo_metadata): +def gitweb_repo_metadata_should_match(session_browser, gitweb_repo_metadata): actual_metadata = application.gitweb_get_repo_metadata( - browser, 'Test-repo') + session_browser, 'Test-repo') assert all(item in actual_metadata.items() for item in gitweb_repo_metadata.items()) @@ -605,11 +623,13 @@ def gitweb_repo_privately_writable(): @when(parsers.parse('I {task:w} the {share_type:w} samba share')) -def samba_enable_share(browser, task, share_type): +def samba_enable_share(session_browser, task, share_type): if task == 'enable': - application.samba_set_share(browser, share_type, status='enabled') + application.samba_set_share(session_browser, share_type, + status='enabled') elif task == 'disable': - application.samba_set_share(browser, share_type, status='disabled') + application.samba_set_share(session_browser, share_type, + status='disabled') @then(parsers.parse('I can write to the {share_type:w} samba share')) @@ -617,12 +637,14 @@ def samba_share_should_be_writable(share_type): application.samba_assert_share_is_writable(share_type) -@then(parsers.parse('a guest user can write to the {share_type:w} samba share')) +@then(parsers.parse('a guest user can write to the {share_type:w} samba share') + ) def samba_share_should_be_writable_to_guest(share_type): application.samba_assert_share_is_writable(share_type, as_guest=True) -@then(parsers.parse('a guest user can\'t access the {share_type:w} samba share')) +@then( + parsers.parse('a guest user can\'t access the {share_type:w} samba share')) def samba_share_should_not_be_accessible_to_guest(share_type): application.samba_assert_share_is_not_accessible(share_type, as_guest=True) diff --git a/functional_tests/step_definitions/interface.py b/functional_tests/step_definitions/interface.py index 257599cea..28e12634b 100644 --- a/functional_tests/step_definitions/interface.py +++ b/functional_tests/step_definitions/interface.py @@ -23,64 +23,65 @@ default_url = config['DEFAULT']['url'] @given("I'm a logged in user") -def logged_in_user(browser): - interface.login(browser, default_url, config['DEFAULT']['username'], +def logged_in_user(session_browser): + interface.login(session_browser, default_url, + config['DEFAULT']['username'], config['DEFAULT']['password']) @given("I'm a logged out user") -def logged_out_user(browser): - browser.visit(default_url + '/plinth/accounts/logout/') +def logged_out_user(session_browser): + session_browser.visit(default_url + '/plinth/accounts/logout/') @when("I log out") -def log_out_user(browser): - browser.visit(default_url + '/plinth/accounts/logout/') +def log_out_user(session_browser): + session_browser.visit(default_url + '/plinth/accounts/logout/') @then(parsers.parse('I should be prompted for login')) -def prompted_for_login(browser): - assert interface.is_login_prompt(browser) +def prompted_for_login(session_browser): + assert interface.is_login_prompt(session_browser) @given(parsers.parse("the user {name:w} doesn't exist")) -def new_user_does_not_exist(browser, name): - interface.delete_user(browser, name) +def new_user_does_not_exist(session_browser, name): + interface.delete_user(session_browser, name) @given(parsers.parse('the user {name:w} exists')) -def test_user_exists(browser, name): - interface.nav_to_module(browser, 'users') - user_link = browser.find_link_by_href('/plinth/sys/users/' + name + - '/edit/') +def test_user_exists(session_browser, name): + interface.nav_to_module(session_browser, 'users') + user_link = session_browser.find_link_by_href('/plinth/sys/users/' + name + + '/edit/') if not user_link: - create_user(browser, name, 'secret123') + create_user(session_browser, name, 'secret123') @when( parsers.parse('I create a user named {name:w} with password {password:w}')) -def create_user(browser, name, password): - interface.create_user(browser, name, password) +def create_user(session_browser, name, password): + interface.create_user(session_browser, name, password) @when(parsers.parse('I rename the user {old_name:w} to {new_name:w}')) -def rename_user(browser, old_name, new_name): - interface.rename_user(browser, old_name, new_name) +def rename_user(session_browser, old_name, new_name): + interface.rename_user(session_browser, old_name, new_name) @when(parsers.parse('I delete the user {name:w}')) -def delete_user(browser, name): - interface.delete_user(browser, name) +def delete_user(session_browser, name): + interface.delete_user(session_browser, name) @then(parsers.parse('{name:w} should be listed as a user')) -def new_user_is_listed(browser, name): - assert interface.is_user(browser, name) +def new_user_is_listed(session_browser, name): + assert interface.is_user(session_browser, name) @then(parsers.parse('{name:w} should not be listed as a user')) -def new_user_is_not_listed(browser, name): - assert not interface.is_user(browser, name) +def new_user_is_not_listed(session_browser, name): + assert not interface.is_user(session_browser, name) @given('a sample local file') @@ -90,10 +91,10 @@ def sample_local_file(): @when('I go to the status logs page') -def help_go_to_status_logs(browser): - interface.go_to_status_logs(browser) +def help_go_to_status_logs(session_browser): + interface.go_to_status_logs(session_browser) @then('status logs should be shown') -def help_status_logs_are_shown(browser): - assert interface.are_status_logs_shown(browser) +def help_status_logs_are_shown(session_browser): + assert interface.are_status_logs_shown(session_browser) diff --git a/functional_tests/step_definitions/service.py b/functional_tests/step_definitions/service.py index 5729dd67a..9b6f351d9 100644 --- a/functional_tests/step_definitions/service.py +++ b/functional_tests/step_definitions/service.py @@ -22,30 +22,31 @@ from support.service import eventually @then(parsers.parse('the {service_name:w} service should be running')) -def service_should_be_running(browser, service_name): - assert eventually(service.is_running, args=[browser, service_name]) +def service_should_be_running(session_browser, service_name): + assert eventually(service.is_running, args=[session_browser, service_name]) @then(parsers.parse('the {service_name:w} service should not be running')) -def service_should_not_be_running(browser, service_name): - assert eventually(service.is_not_running, args=[browser, service_name]) +def service_should_not_be_running(session_browser, service_name): + assert eventually(service.is_not_running, + args=[session_browser, service_name]) @then(parsers.parse('the network time service should be running')) -def ntp_should_be_running(browser): - assert service.is_running(browser, 'ntp') +def ntp_should_be_running(session_browser): + assert service.is_running(session_browser, 'ntp') @then(parsers.parse('the network time service should not be running')) -def ntp_should_not_be_running(browser): - assert not service.is_running(browser, 'ntp') +def ntp_should_not_be_running(session_browser): + assert not service.is_running(session_browser, 'ntp') @then(parsers.parse('the service discovery service should be running')) -def avahi_should_be_running(browser): - assert service.is_running(browser, 'avahi') +def avahi_should_be_running(session_browser): + assert service.is_running(session_browser, 'avahi') @then(parsers.parse('the service discovery service should not be running')) -def avahi_should_not_be_running(browser): - assert not service.is_running(browser, 'avahi') +def avahi_should_not_be_running(session_browser): + assert not service.is_running(session_browser, 'avahi') diff --git a/functional_tests/step_definitions/site.py b/functional_tests/step_definitions/site.py index b210fb346..8a6b89dbe 100644 --- a/functional_tests/step_definitions/site.py +++ b/functional_tests/step_definitions/site.py @@ -21,47 +21,48 @@ from support import interface, site @then(parsers.parse('the {site_name:w} site should be available')) -def site_should_be_available(browser, site_name): - assert site.is_available(browser, site_name) +def site_should_be_available(session_browser, site_name): + assert site.is_available(session_browser, site_name) @then(parsers.parse('the {site_name:w} site should not be available')) -def site_should_not_be_available(browser, site_name): - assert not site.is_available(browser, site_name) +def site_should_not_be_available(session_browser, site_name): + assert not site.is_available(session_browser, site_name) @when(parsers.parse('I access {app_name:w} application')) -def access_application(browser, app_name): - site.access_url(browser, app_name) +def access_application(session_browser, app_name): + site.access_url(session_browser, app_name) @when( parsers.parse( 'I upload an image named {image:S} to mediawiki with credentials {username:w} and ' '{password:w}')) -def upload_image(browser, username, password, image): - site.upload_image_mediawiki(browser, username, password, image) +def upload_image(session_browser, username, password, image): + site.upload_image_mediawiki(session_browser, username, password, image) @then(parsers.parse('there should be {image:S} image')) -def uploaded_image_should_be_available(browser, image): - uploaded_image = site.get_uploaded_image_in_mediawiki(browser, image) +def uploaded_image_should_be_available(session_browser, image): + uploaded_image = site.get_uploaded_image_in_mediawiki( + session_browser, image) assert image.lower() == uploaded_image.lower() @then( parsers.parse( 'I should be able to login to coquelicot with password {password:w}')) -def verify_upload_password(browser, password): - site.verify_coquelicot_upload_password(browser, password) +def verify_upload_password(session_browser, password): + site.verify_coquelicot_upload_password(session_browser, password) @when( parsers.parse( 'I upload the sample local file to coquelicot with password {password:w}' )) -def coquelicot_upload_file(browser, sample_local_file, password): - url = site.upload_file_to_coquelicot(browser, +def coquelicot_upload_file(session_browser, sample_local_file, password): + url = site.upload_file_to_coquelicot(session_browser, sample_local_file['file_path'], password) sample_local_file['upload_url'] = url @@ -80,165 +81,170 @@ def coquelicot_compare_upload_download_files(sample_local_file): @then(parsers.parse('the mediawiki site should allow creating accounts')) -def mediawiki_allows_creating_accounts(browser): - site.verify_mediawiki_create_account_link(browser) +def mediawiki_allows_creating_accounts(session_browser): + site.verify_mediawiki_create_account_link(session_browser) @then(parsers.parse('the mediawiki site should not allow creating accounts')) -def mediawiki_does_not_allow_creating_accounts(browser): - site.verify_mediawiki_no_create_account_link(browser) +def mediawiki_does_not_allow_creating_accounts(session_browser): + site.verify_mediawiki_no_create_account_link(session_browser) @then( parsers.parse('the mediawiki site should allow anonymous reads and writes') ) -def mediawiki_allows_anonymous_reads_edits(browser): - site.verify_mediawiki_anonymous_reads_edits_link(browser) +def mediawiki_allows_anonymous_reads_edits(session_browser): + site.verify_mediawiki_anonymous_reads_edits_link(session_browser) @then( parsers.parse( 'the mediawiki site should not allow anonymous reads and writes')) -def mediawiki_does_not_allow__account_creation_anonymous_reads_edits(browser): - site.verify_mediawiki_no_anonymous_reads_edits_link(browser) +def mediawiki_does_not_allow__account_creation_anonymous_reads_edits( + session_browser): + site.verify_mediawiki_no_anonymous_reads_edits_link(session_browser) @then( parsers.parse( 'I should see the Upload File option in the side pane when logged in ' 'with credentials {username:w} and {password:w}')) -def login_to_mediawiki_with_credentials(browser, username, password): - site.login_to_mediawiki_with_credentials(browser, username, password) +def login_to_mediawiki_with_credentials(session_browser, username, password): + site.login_to_mediawiki_with_credentials(session_browser, username, + password) @when('I delete the mediawiki main page') -def mediawiki_delete_main_page(browser): - site.mediawiki_delete_main_page(browser) +def mediawiki_delete_main_page(session_browser): + site.mediawiki_delete_main_page(session_browser) @then('the mediawiki main page should be restored') -def mediawiki_verify_text(browser): - assert site.mediawiki_has_main_page(browser) +def mediawiki_verify_text(session_browser): + assert site.mediawiki_has_main_page(session_browser) @when('all ed2k files are removed from mldonkey') -def mldonkey_remove_all_ed2k_files(browser): - site.mldonkey_remove_all_ed2k_files(browser) +def mldonkey_remove_all_ed2k_files(session_browser): + site.mldonkey_remove_all_ed2k_files(session_browser) @when('I upload a sample ed2k file to mldonkey') -def mldonkey_upload_sample_ed2k_file(browser): - site.mldonkey_upload_sample_ed2k_file(browser) +def mldonkey_upload_sample_ed2k_file(session_browser): + site.mldonkey_upload_sample_ed2k_file(session_browser) @then( parsers.parse( 'there should be {ed2k_files_number:d} ed2k files listed in mldonkey')) -def mldonkey_assert_number_of_ed2k_files(browser, ed2k_files_number): - assert ed2k_files_number == site.mldonkey_get_number_of_ed2k_files(browser) +def mldonkey_assert_number_of_ed2k_files(session_browser, ed2k_files_number): + assert ed2k_files_number == site.mldonkey_get_number_of_ed2k_files( + session_browser) @when('all torrents are removed from transmission') -def transmission_remove_all_torrents(browser): - site.transmission_remove_all_torrents(browser) +def transmission_remove_all_torrents(session_browser): + site.transmission_remove_all_torrents(session_browser) @when('I upload a sample torrent to transmission') -def transmission_upload_sample_torrent(browser): - site.transmission_upload_sample_torrent(browser) +def transmission_upload_sample_torrent(session_browser): + site.transmission_upload_sample_torrent(session_browser) @then( parsers.parse( 'there should be {torrents_number:d} torrents listed in transmission')) -def transmission_assert_number_of_torrents(browser, torrents_number): - assert torrents_number == site.transmission_get_number_of_torrents(browser) +def transmission_assert_number_of_torrents(session_browser, torrents_number): + assert torrents_number == site.transmission_get_number_of_torrents( + session_browser) @when('all torrents are removed from deluge') -def deluge_remove_all_torrents(browser): - site.deluge_remove_all_torrents(browser) +def deluge_remove_all_torrents(session_browser): + site.deluge_remove_all_torrents(session_browser) @when('I upload a sample torrent to deluge') -def deluge_upload_sample_torrent(browser): - site.deluge_upload_sample_torrent(browser) +def deluge_upload_sample_torrent(session_browser): + site.deluge_upload_sample_torrent(session_browser) @then( parsers.parse( 'there should be {torrents_number:d} torrents listed in deluge')) -def deluge_assert_number_of_torrents(browser, torrents_number): - assert torrents_number == site.deluge_get_number_of_torrents(browser) +def deluge_assert_number_of_torrents(session_browser, torrents_number): + assert torrents_number == site.deluge_get_number_of_torrents( + session_browser) @then('the calendar should be available') -def assert_calendar_is_available(browser): - assert site.calendar_is_available(browser) +def assert_calendar_is_available(session_browser): + assert site.calendar_is_available(session_browser) @then('the calendar should not be available') -def assert_calendar_is_not_available(browser): - assert not site.calendar_is_available(browser) +def assert_calendar_is_not_available(session_browser): + assert not site.calendar_is_available(session_browser) @then('the addressbook should be available') -def assert_addressbook_is_available(browser): - assert site.addressbook_is_available(browser) +def assert_addressbook_is_available(session_browser): + assert site.addressbook_is_available(session_browser) @then('the addressbook should not be available') -def assert_addressbook_is_not_available(browser): - assert not site.addressbook_is_available(browser) +def assert_addressbook_is_not_available(session_browser): + assert not site.addressbook_is_available(session_browser) @given(parsers.parse('syncthing folder {folder_name:w} is not present')) -def syncthing_folder_not_present(browser, folder_name): - if site.syncthing_folder_is_present(browser, folder_name): - site.syncthing_remove_folder(browser, folder_name) +def syncthing_folder_not_present(session_browser, folder_name): + if site.syncthing_folder_is_present(session_browser, folder_name): + site.syncthing_remove_folder(session_browser, folder_name) @given( parsers.parse( 'folder {folder_path:S} is present as syncthing folder {folder_name:w}' )) -def syncthing_folder_present(browser, folder_name, folder_path): - if not site.syncthing_folder_is_present(browser, folder_name): - site.syncthing_add_folder(browser, folder_name, folder_path) +def syncthing_folder_present(session_browser, folder_name, folder_path): + if not site.syncthing_folder_is_present(session_browser, folder_name): + site.syncthing_add_folder(session_browser, folder_name, folder_path) @when( parsers.parse( 'I add a folder {folder_path:S} as syncthing folder {folder_name:w}')) -def syncthing_add_folder(browser, folder_name, folder_path): - site.syncthing_add_folder(browser, folder_name, folder_path) +def syncthing_add_folder(session_browser, folder_name, folder_path): + site.syncthing_add_folder(session_browser, folder_name, folder_path) @when(parsers.parse('I remove syncthing folder {folder_name:w}')) -def syncthing_remove_folder(browser, folder_name): - site.syncthing_remove_folder(browser, folder_name) +def syncthing_remove_folder(session_browser, folder_name): + site.syncthing_remove_folder(session_browser, folder_name) @then(parsers.parse('syncthing folder {folder_name:w} should be present')) -def syncthing_assert_folder_present(browser, folder_name): - assert site.syncthing_folder_is_present(browser, folder_name) +def syncthing_assert_folder_present(session_browser, folder_name): + assert site.syncthing_folder_is_present(session_browser, folder_name) @then(parsers.parse('syncthing folder {folder_name:w} should not be present')) -def syncthing_assert_folder_not_present(browser, folder_name): - assert not site.syncthing_folder_is_present(browser, folder_name) +def syncthing_assert_folder_not_present(session_browser, folder_name): + assert not site.syncthing_folder_is_present(session_browser, folder_name) @given('I subscribe to a feed in ttrss') -def ttrss_subscribe(browser): - site.ttrss_subscribe(browser) +def ttrss_subscribe(session_browser): + site.ttrss_subscribe(session_browser) @when('I unsubscribe from the feed in ttrss') -def ttrss_unsubscribe(browser): - site.ttrss_unsubscribe(browser) +def ttrss_unsubscribe(session_browser): + site.ttrss_unsubscribe(session_browser) @then('I should be subscribed to the feed in ttrss') -def ttrss_assert_subscribed(browser): - assert site.ttrss_is_subscribed(browser) +def ttrss_assert_subscribed(session_browser): + assert site.ttrss_is_subscribed(session_browser) diff --git a/functional_tests/step_definitions/system.py b/functional_tests/step_definitions/system.py index 687a706dd..de04ce5d6 100644 --- a/functional_tests/step_definitions/system.py +++ b/functional_tests/step_definitions/system.py @@ -46,68 +46,68 @@ def downloaded_file_info(): @given(parsers.parse('the home page is {app_name:w}')) -def set_home_page(browser, app_name): - system.set_home_page(browser, app_name) +def set_home_page(session_browser, app_name): + system.set_home_page(session_browser, app_name) @given(parsers.parse('the domain name is set to {domain:S}')) -def set_domain_name(browser, domain): - system.set_domain_name(browser, domain) +def set_domain_name(session_browser, domain): + system.set_domain_name(session_browser, domain) @given('advanced mode is on') -def advanced_mode_is_on(browser): - system.set_advanced_mode(browser, True) +def advanced_mode_is_on(session_browser): + system.set_advanced_mode(session_browser, True) @when(parsers.parse('I change the hostname to {hostname:w}')) -def change_hostname_to(browser, hostname): - system.set_hostname(browser, hostname) +def change_hostname_to(session_browser, hostname): + system.set_hostname(session_browser, hostname) @when(parsers.parse('I change the domain name to {domain:S}')) -def change_domain_name_to(browser, domain): - system.set_domain_name(browser, domain) +def change_domain_name_to(session_browser, domain): + system.set_domain_name(session_browser, domain) @when(parsers.parse('I change the home page to {app_name:w}')) -def change_home_page_to(browser, app_name): - system.set_home_page(browser, app_name) +def change_home_page_to(session_browser, app_name): + system.set_home_page(session_browser, app_name) @when('I change the language to ') -def change_language(browser, language): - system.set_language(browser, language_codes[language]) +def change_language(session_browser, language): + system.set_language(session_browser, language_codes[language]) @then(parsers.parse('the hostname should be {hostname:w}')) -def hostname_should_be(browser, hostname): - assert system.get_hostname(browser) == hostname +def hostname_should_be(session_browser, hostname): + assert system.get_hostname(session_browser) == hostname @then(parsers.parse('the domain name should be {domain:S}')) -def domain_name_should_be(browser, domain): - assert system.get_domain_name(browser) == domain +def domain_name_should_be(session_browser, domain): + assert system.get_domain_name(session_browser) == domain @then('Plinth language should be ') -def plinth_language_should_be(browser, language): - assert system.check_language(browser, language_codes[language]) +def plinth_language_should_be(session_browser, language): + assert system.check_language(session_browser, language_codes[language]) @given('the list of snapshots is empty') -def empty_snapshots_list(browser): - system.delete_all_snapshots(browser) +def empty_snapshots_list(session_browser): + system.delete_all_snapshots(session_browser) @when('I manually create a snapshot') -def create_snapshot(browser): - system.create_snapshot(browser) +def create_snapshot(session_browser): + system.create_snapshot(session_browser) @then(parsers.parse('there should be {count:d} snapshot in the list')) -def verify_snapshot_count(browser, count): - num_snapshots = system.get_snapshot_count(browser) +def verify_snapshot_count(session_browser, count): + num_snapshots = system.get_snapshot_count(session_browser) assert num_snapshots == count @@ -118,14 +118,14 @@ def verify_snapshot_count(browser, count): '{software_enabled:w}, hourly limit {hourly:d}, daily limit {daily:d}' ', weekly limit {weekly:d}, monthly limit {monthly:d}, yearly limit ' '{yearly:d}')) -def snapshot_given_set_configuration(browser, free_space, timeline_enabled, - software_enabled, hourly, daily, weekly, - monthly, yearly): +def snapshot_given_set_configuration(session_browser, free_space, + timeline_enabled, software_enabled, + hourly, daily, weekly, monthly, yearly): timeline_enabled = (timeline_enabled == 'enabled') software_enabled = (software_enabled == 'enabled') - system.snapshot_set_configuration(browser, free_space, timeline_enabled, - software_enabled, hourly, daily, weekly, - monthly, yearly) + system.snapshot_set_configuration(session_browser, free_space, + timeline_enabled, software_enabled, + hourly, daily, weekly, monthly, yearly) @when( @@ -135,14 +135,14 @@ def snapshot_given_set_configuration(browser, free_space, timeline_enabled, 'software snapshots {software_enabled:w}, hourly limit {hourly:d}, ' 'daily limit {daily:d}, weekly limit {weekly:d}, monthly limit ' '{monthly:d}, yearly limit {yearly:d}')) -def snapshot_set_configuration(browser, free_space, timeline_enabled, +def snapshot_set_configuration(session_browser, free_space, timeline_enabled, software_enabled, hourly, daily, weekly, monthly, yearly): timeline_enabled = (timeline_enabled == 'enabled') software_enabled = (software_enabled == 'enabled') - system.snapshot_set_configuration(browser, free_space, timeline_enabled, - software_enabled, hourly, daily, weekly, - monthly, yearly) + system.snapshot_set_configuration(session_browser, free_space, + timeline_enabled, software_enabled, + hourly, daily, weekly, monthly, yearly) @then( @@ -152,59 +152,60 @@ def snapshot_set_configuration(browser, free_space, timeline_enabled, '{software_enabled:w}, hourly limit {hourly:d}, daily limit ' '{daily:d}, weekly limit {weekly:d}, monthly limit {monthly:d}, ' 'yearly limit {yearly:d}')) -def snapshot_assert_configuration(browser, free_space, timeline_enabled, - software_enabled, hourly, daily, weekly, - monthly, yearly): +def snapshot_assert_configuration(session_browser, free_space, + timeline_enabled, software_enabled, hourly, + daily, weekly, monthly, yearly): timeline_enabled = (timeline_enabled == 'enabled') software_enabled = (software_enabled == 'enabled') assert (free_space, timeline_enabled, software_enabled, hourly, daily, weekly, monthly, - yearly) == system.snapshot_get_configuration(browser) + yearly) == system.snapshot_get_configuration(session_browser) @then(parsers.parse('the home page should be {app_name:w}')) -def home_page_should_be(browser, app_name): - assert system.check_home_page_redirect(browser, app_name) +def home_page_should_be(session_browser, app_name): + assert system.check_home_page_redirect(session_browser, app_name) @given('dynamicdns is configured') -def dynamicdns_configure(browser): - system.dynamicdns_configure(browser) +def dynamicdns_configure(session_browser): + system.dynamicdns_configure(session_browser) @when('I change the dynamicdns configuration') -def dynamicdns_change_config(browser): - system.dynamicdns_change_config(browser) +def dynamicdns_change_config(session_browser): + system.dynamicdns_change_config(session_browser) @then('dynamicdns should have the original configuration') -def dynamicdns_has_original_config(browser): - assert system.dynamicdns_has_original_config(browser) +def dynamicdns_has_original_config(session_browser): + assert system.dynamicdns_has_original_config(session_browser) @when(parsers.parse('I create a backup of the {app_name:w} app data')) -def backup_create(browser, app_name): +def backup_create(session_browser, app_name): if config.getboolean('DEFAULT', 'delete_root_backup_archives'): - system.backup_delete_root_archives(browser) - system.backup_create(browser, app_name) + system.backup_delete_root_archives(session_browser) + system.backup_create(session_browser, app_name) @when(parsers.parse('I download the latest app data backup')) -def backup_download(browser, downloaded_file_info): - file_path = system.download_latest_backup(browser) +def backup_download(session_browser, downloaded_file_info): + file_path = system.download_latest_backup(session_browser) downloaded_file_info['path'] = file_path @when(parsers.parse('I restore the {app_name:w} app data backup')) -def backup_restore(browser, app_name): - system.backup_restore(browser, app_name) +def backup_restore(session_browser, app_name): + system.backup_restore(session_browser, app_name) @when(parsers.parse('I restore the downloaded app data backup')) -def backup_restore_from_upload(browser, app_name, downloaded_file_info): +def backup_restore_from_upload(session_browser, app_name, + downloaded_file_info): path = downloaded_file_info["path"] try: - system.backup_upload_and_restore(browser, app_name, path) + system.backup_upload_and_restore(session_browser, app_name, path) except Exception as err: raise err finally: @@ -212,125 +213,128 @@ def backup_restore_from_upload(browser, app_name, downloaded_file_info): @then('pagekite should be enabled') -def pagekite_assert_enabled(browser): - assert system.pagekite_is_enabled(browser) +def pagekite_assert_enabled(session_browser): + assert system.pagekite_is_enabled(session_browser) @then('pagekite should be disabled') -def pagekite_assert_disabled(browser): - assert not system.pagekite_is_enabled(browser) +def pagekite_assert_disabled(session_browser): + assert not system.pagekite_is_enabled(session_browser) @when( parsers.parse( 'I configure pagekite with host {host:S}, port {port:d}, kite name {kite_name:S} and kite secret {kite_secret:w}' )) -def pagekite_configure(browser, host, port, kite_name, kite_secret): - system.pagekite_configure(browser, host, port, kite_name, kite_secret) +def pagekite_configure(session_browser, host, port, kite_name, kite_secret): + system.pagekite_configure(session_browser, host, port, kite_name, + kite_secret) @then( parsers.parse( 'pagekite should be configured with host {host:S}, port {port:d}, kite name {kite_name:S} and kite secret {kite_secret:w}' )) -def pagekite_assert_configured(browser, host, port, kite_name, kite_secret): +def pagekite_assert_configured(session_browser, host, port, kite_name, + kite_secret): assert (host, port, kite_name, - kite_secret) == system.pagekite_get_configuration(browser) + kite_secret) == system.pagekite_get_configuration(session_browser) @given(parsers.parse('bind forwarders are set to {forwarders}')) -def bind_given_set_forwarders(browser, forwarders): - system.bind_set_forwarders(browser, forwarders) +def bind_given_set_forwarders(session_browser, forwarders): + system.bind_set_forwarders(session_browser, forwarders) @when(parsers.parse('I set bind forwarders to {forwarders}')) -def bind_set_forwarders(browser, forwarders): - system.bind_set_forwarders(browser, forwarders) +def bind_set_forwarders(session_browser, forwarders): + system.bind_set_forwarders(session_browser, forwarders) @then(parsers.parse('bind forwarders should be {forwarders}')) -def bind_assert_forwarders(browser, forwarders): - assert system.bind_get_forwarders(browser) == forwarders +def bind_assert_forwarders(session_browser, forwarders): + assert system.bind_get_forwarders(session_browser) == forwarders @given(parsers.parse('bind DNSSEC is {enable:w}')) -def bind_given_enable_dnssec(browser, enable): +def bind_given_enable_dnssec(session_browser, enable): should_enable = (enable == 'enabled') - system.bind_enable_dnssec(browser, should_enable) + system.bind_enable_dnssec(session_browser, should_enable) @when(parsers.parse('I {enable:w} bind DNSSEC')) -def bind_enable_dnssec(browser, enable): +def bind_enable_dnssec(session_browser, enable): should_enable = (enable == 'enable') - system.bind_enable_dnssec(browser, should_enable) + system.bind_enable_dnssec(session_browser, should_enable) @then(parsers.parse('bind DNSSEC should be {enabled:w}')) -def bind_assert_dnssec(browser, enabled): - assert system.bind_get_dnssec(browser) == (enabled == 'enabled') +def bind_assert_dnssec(session_browser, enabled): + assert system.bind_get_dnssec(session_browser) == (enabled == 'enabled') @given(parsers.parse('restricted console logins are {enabled}')) -def security_given_enable_restricted_logins(browser, enabled): +def security_given_enable_restricted_logins(session_browser, enabled): should_enable = (enabled == 'enabled') - system.security_enable_restricted_logins(browser, should_enable) + system.security_enable_restricted_logins(session_browser, should_enable) @when(parsers.parse('I {enable} restricted console logins')) -def security_enable_restricted_logins(browser, enable): +def security_enable_restricted_logins(session_browser, enable): should_enable = (enable == 'enable') - system.security_enable_restricted_logins(browser, should_enable) + system.security_enable_restricted_logins(session_browser, should_enable) @then(parsers.parse('restricted console logins should be {enabled}')) -def security_assert_restricted_logins(browser, enabled): +def security_assert_restricted_logins(session_browser, enabled): enabled = (enabled == 'enabled') - assert system.security_get_restricted_logins(browser) == enabled + assert system.security_get_restricted_logins(session_browser) == enabled @given(parsers.parse('automatic upgrades are {enabled:w}')) -def upgrades_given_enable_automatic(browser, enabled): +def upgrades_given_enable_automatic(session_browser, enabled): should_enable = (enabled == 'enabled') - system.upgrades_enable_automatic(browser, should_enable) + system.upgrades_enable_automatic(session_browser, should_enable) @when(parsers.parse('I {enable:w} automatic upgrades')) -def upgrades_enable_automatic(browser, enable): +def upgrades_enable_automatic(session_browser, enable): should_enable = (enable == 'enable') - system.upgrades_enable_automatic(browser, should_enable) + system.upgrades_enable_automatic(session_browser, should_enable) @then(parsers.parse('automatic upgrades should be {enabled:w}')) -def upgrades_assert_automatic(browser, enabled): +def upgrades_assert_automatic(session_browser, enabled): should_be_enabled = (enabled == 'enabled') - assert system.upgrades_get_automatic(browser) == should_be_enabled + assert system.upgrades_get_automatic(session_browser) == should_be_enabled @given( parsers.parse( 'the {key_type:w} key for {domain:S} is imported in monkeysphere')) -def monkeysphere_given_import_key(browser, key_type, domain): - system.monkeysphere_import_key(browser, key_type.lower(), domain) +def monkeysphere_given_import_key(session_browser, key_type, domain): + system.monkeysphere_import_key(session_browser, key_type.lower(), domain) @when(parsers.parse('I import {key_type:w} key for {domain:S} in monkeysphere') ) -def monkeysphere_import_key(browser, key_type, domain): - system.monkeysphere_import_key(browser, key_type.lower(), domain) +def monkeysphere_import_key(session_browser, key_type, domain): + system.monkeysphere_import_key(session_browser, key_type.lower(), domain) @then( parsers.parse( 'the {key_type:w} key should imported for {domain:S} in monkeysphere')) -def monkeysphere_assert_imported_key(browser, key_type, domain): - system.monkeysphere_assert_imported_key(browser, key_type.lower(), domain) +def monkeysphere_assert_imported_key(session_browser, key_type, domain): + system.monkeysphere_assert_imported_key(session_browser, key_type.lower(), + domain) @then( parsers.parse('I should be able to publish {key_type:w} key for ' '{domain:S} in monkeysphere')) -def monkeysphere_publish_key(browser, key_type, domain): - system.monkeysphere_publish_key(browser, key_type.lower(), domain) +def monkeysphere_publish_key(session_browser, key_type, domain): + system.monkeysphere_publish_key(session_browser, key_type.lower(), domain) @when(parsers.parse('I wait for {seconds} seconds')) @@ -340,15 +344,15 @@ def sleep_for(seconds): @when(parsers.parse('I open the main page')) -def open_main_page(browser): - system.open_main_page(browser) +def open_main_page(session_browser): + system.open_main_page(session_browser) @then(parsers.parse('the main page should be shown')) -def main_page_is_shown(browser): - assert (browser.url.endswith('/plinth/')) +def main_page_is_shown(session_browser): + assert (session_browser.url.endswith('/plinth/')) @given(parsers.parse('the network device is in the {zone:w} firewall zone')) -def networks_set_firewall_zone(browser, zone): - system.networks_set_firewall_zone(browser, zone) +def networks_set_firewall_zone(session_browser, zone): + system.networks_set_firewall_zone(session_browser, zone) diff --git a/functional_tests/support/interface.py b/functional_tests/support/interface.py index a24064782..e2f928a1a 100644 --- a/functional_tests/support/interface.py +++ b/functional_tests/support/interface.py @@ -36,10 +36,11 @@ default_url = config['DEFAULT']['url'] def login(browser, url, username, password): - browser.visit(url) - # XXX browser.visit goes to the web page with no cookies, - # hence there should be some kind of session storage for this to work + browser.visit(url) + apps_link = browser.find_link_by_href('/plinth/apps/') + if len(apps_link): + return login_button = browser.find_link_by_href('/plinth/accounts/login/') if login_button: diff --git a/functional_tests/support/site.py b/functional_tests/support/site.py index e4f8dac8f..c715b4fd4 100644 --- a/functional_tests/support/site.py +++ b/functional_tests/support/site.py @@ -85,15 +85,17 @@ def upload_file_to_coquelicot(browser, file_path, password): def verify_mediawiki_create_account_link(browser): - browser.visit(config['DEFAULT']['url'] + '/mediawiki') + browser.visit(config['DEFAULT']['url'] + + '/mediawiki/index.php/Special:CreateAccount') assert eventually(browser.is_element_present_by_id, - args=['pt-createaccount']) + args=['wpCreateaccount']) def verify_mediawiki_no_create_account_link(browser): - browser.visit(config['DEFAULT']['url'] + '/mediawiki') + browser.visit(config['DEFAULT']['url'] + + '/mediawiki/index.php/Special:CreateAccount') assert eventually(browser.is_element_not_present_by_id, - args=['pt-createaccount']) + args=['wpCreateaccount']) def verify_mediawiki_anonymous_reads_edits_link(browser): From 3df23a4aa0ee5238272f1f13ed29275ddf8959e2 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 19:02:19 +0530 Subject: [PATCH 63/87] functional-tests: Africa/Addis_Abada is gone? Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- functional_tests/features/date_and_time.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functional_tests/features/date_and_time.feature b/functional_tests/features/date_and_time.feature index ece39ab86..73bb39c54 100644 --- a/functional_tests/features/date_and_time.feature +++ b/functional_tests/features/date_and_time.feature @@ -39,6 +39,6 @@ Scenario: Set timezone Scenario: Backup and restore datetime When I set the time zone to Africa/Accra And I create a backup of the datetime app data - And I set the time zone to Africa/Addis_Ababa + And I set the time zone to Africa/Cairo And I restore the datetime app data backup Then the time zone should be Africa/Accra From 98e0ccdda0239a81b6d017f4e8a2e996a0fb5c1d Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 19:02:54 +0530 Subject: [PATCH 64/87] functional-tests: Add tag @service-discovery Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- functional_tests/features/service_discovery.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functional_tests/features/service_discovery.feature b/functional_tests/features/service_discovery.feature index 228e4f1d4..4cdfd3d20 100644 --- a/functional_tests/features/service_discovery.feature +++ b/functional_tests/features/service_discovery.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@system @essential +@system @essential @service-discovery Feature: Service Discovery Configure service discovery. From 8b4ccceb6bd46ebd0e545441208d46e9aa3d5f4f Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 19:35:34 +0530 Subject: [PATCH 65/87] functional-tests: Make nav_to_module efficient Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- functional_tests/support/interface.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/functional_tests/support/interface.py b/functional_tests/support/interface.py index e2f928a1a..b109fd19c 100644 --- a/functional_tests/support/interface.py +++ b/functional_tests/support/interface.py @@ -62,15 +62,10 @@ def is_login_prompt(browser): def nav_to_module(browser, module): - with wait_for_page_update(browser): - browser.find_link_by_href('/plinth/').first.click() sys_or_apps = 'sys' if module in sys_modules else 'apps' - with wait_for_page_update(browser): - browser.find_link_by_href( - '/plinth/{}/'.format(sys_or_apps)).first.click() - with wait_for_page_update(browser): - browser.find_link_by_href('/plinth/{0}/{1}/'.format( - sys_or_apps, module)).first.click() + required_url = default_url + f'/plinth/{sys_or_apps}/{module}/' + if not (browser.url == required_url): + browser.visit(required_url) def create_user(browser, name, password): From 26100b50c17afd0318e9280f046bdd58833dfce7 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 20:17:19 +0530 Subject: [PATCH 66/87] functional-tests: Avoid unnecessary trips to Home Signed-off-by: Joseph Nuthalapati [sunil: Check fo '/plinth/' instead of 'plinth' in URL checking for UI] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- functional_tests/support/interface.py | 6 ++++-- functional_tests/support/system.py | 7 ++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/functional_tests/support/interface.py b/functional_tests/support/interface.py index b109fd19c..54fff5573 100644 --- a/functional_tests/support/interface.py +++ b/functional_tests/support/interface.py @@ -37,7 +37,9 @@ default_url = config['DEFAULT']['url'] def login(browser, url, username, password): - browser.visit(url) + if '/plinth/' not in browser.url: + browser.visit(url) + apps_link = browser.find_link_by_href('/plinth/apps/') if len(apps_link): return @@ -64,7 +66,7 @@ def is_login_prompt(browser): def nav_to_module(browser, module): sys_or_apps = 'sys' if module in sys_modules else 'apps' required_url = default_url + f'/plinth/{sys_or_apps}/{module}/' - if not (browser.url == required_url): + if browser.url != required_url: browser.visit(required_url) diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py index 431f069f9..5fc3b541b 100644 --- a/functional_tests/support/system.py +++ b/functional_tests/support/system.py @@ -217,9 +217,7 @@ def backup_delete_root_archives(browser): def backup_create(browser, app_name): - browser.visit(default_url) application.install(browser, 'backups') - browser.find_link_by_href('/plinth/sys/backups/create/').first.click() for app in browser.find_by_css('input[type=checkbox]'): app.uncheck() @@ -231,7 +229,6 @@ def backup_create(browser, app_name): def backup_restore(browser, app_name): - browser.visit(default_url) nav_to_module(browser, 'backups') path = "//a[starts-with(@href,'/plinth/sys/backups/root/restore-archive/')]" # assume that want to restore the last (most recently created) backup @@ -241,7 +238,6 @@ def backup_restore(browser, app_name): def backup_upload_and_restore(browser, app_name, downloaded_file_path): - browser.visit(default_url) nav_to_module(browser, 'backups') browser.find_link_by_href('/plinth/sys/backups/upload/').first.click() fileinput = browser.driver.find_element_by_id('id_backups-file') @@ -422,7 +418,8 @@ def open_main_page(browser): def networks_set_firewall_zone(browser, zone): """"Set the network device firewall zone as internal or external.""" nav_to_module(browser, 'networks') - device = browser.find_by_xpath('//span[contains(@class, "label-success") ' + device = browser.find_by_xpath( + '//span[contains(@class, "label-success") ' 'and contains(@class, "connection-status-label")]/following::a').first network_id = device['href'].split('/')[-3] device.click() From eab1e577b9f7d98e50f0696474571e9c36058d79 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 22:29:23 +0530 Subject: [PATCH 67/87] functional-tests: Avoid warnings about markers Register all markers in pytest.ini Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- .../features/date_and_time.feature | 2 +- functional_tests/features/i2p.feature | 2 +- .../features/service_discovery.feature | 2 +- functional_tests/features/tor.feature | 2 +- .../features/users_and_groups.feature | 2 +- pytest.ini | 47 +++++++++++++++++++ 6 files changed, 52 insertions(+), 5 deletions(-) diff --git a/functional_tests/features/date_and_time.feature b/functional_tests/features/date_and_time.feature index 73bb39c54..6c8ed3419 100644 --- a/functional_tests/features/date_and_time.feature +++ b/functional_tests/features/date_and_time.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@essential @date-and-time @system @backups +@essential @date_and_time @system @backups Feature: Date and Time Configure time zone and network time service. diff --git a/functional_tests/features/i2p.feature b/functional_tests/features/i2p.feature index 4b27ad189..66ebea0a4 100644 --- a/functional_tests/features/i2p.feature +++ b/functional_tests/features/i2p.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@apps @i2p-app +@apps @i2p Feature: I2P Anonymity Network Manage I2P configuration. diff --git a/functional_tests/features/service_discovery.feature b/functional_tests/features/service_discovery.feature index 4cdfd3d20..a1a990b8b 100644 --- a/functional_tests/features/service_discovery.feature +++ b/functional_tests/features/service_discovery.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@system @essential @service-discovery +@system @essential @service_discovery Feature: Service Discovery Configure service discovery. diff --git a/functional_tests/features/tor.feature b/functional_tests/features/tor.feature index e03123b1c..c57dfbecf 100644 --- a/functional_tests/features/tor.feature +++ b/functional_tests/features/tor.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@apps @tor-app @backups +@apps @tor @backups Feature: Tor Anonymity Network Manage Tor configuration. diff --git a/functional_tests/features/users_and_groups.feature b/functional_tests/features/users_and_groups.feature index f93bee767..c0feb9a36 100644 --- a/functional_tests/features/users_and_groups.feature +++ b/functional_tests/features/users_and_groups.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@system @essential @users-groups +@system @essential @users_groups Feature: Users and Groups Manage users and groups. diff --git a/pytest.ini b/pytest.ini index d07567e8a..f557054cf 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,3 +1,50 @@ [pytest] DJANGO_SETTINGS_MODULE = plinth.tests.data.django_test_settings markers = functional + apps + backups + bind + configuration + coquelicot + date_and_time + deluge + dynamicdns + ejabberd + essential + gitweb + help + i2p + ikiwiki + infinoted + jsxc + matrixsynapse + mediawiki + minetest + mldonkey + monkeysphere + mumble + openvpn + pagekite + privoxy + quassel + radicale + roundcube + samba + searx + security + service_discovery + shadowsocks + sharing + sip + skip + snapshot + ssh + sso + syncthing + system + tahoe + tor + transmission + ttrss + upgrades + users_groups From f10d763e6ef9787523c56b10d0fd0998ec471540 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 22:30:13 +0530 Subject: [PATCH 68/87] functional-tests: Minor refactoring Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- functional_tests/support/application.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index da01d020d..71109c565 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -63,9 +63,13 @@ def get_app_checkbox_id(app_name): return checkbox_id -def install(browser, app_name): +def _find_install_button(browser, app_name): interface.nav_to_module(browser, get_app_module(app_name)) - install = browser.find_by_css('.form-install input[type=submit]') + return browser.find_by_css('.form-install input[type=submit]') + + +def install(browser, app_name): + install_button = _find_install_button(browser, app_name) def install_in_progress(): selectors = [ @@ -89,15 +93,14 @@ def install(browser, app_name): return wait_for_install() - if install: - install.click() + if install_button: + install_button.click() wait_for_install() - sleep(2) # XXX This shouldn't be required. + # sleep(2) # XXX This shouldn't be required. def is_installed(browser, app_name): - interface.nav_to_module(browser, get_app_module(app_name)) - install_button = browser.find_by_css('.form-install input[type=submit]') + install_button = _find_install_button(browser, app_name) return not bool(install_button) @@ -410,8 +413,9 @@ def _gitweb_get_repo_url(repo, with_auth): if with_auth: password = config['DEFAULT']['password'] - return '{0}://{1}:{2}@{3}/gitweb/{4}'.format( - scheme, config['DEFAULT']['username'], password, url, repo) + return '{0}://{1}:{2}@{3}/gitweb/{4}'.format(scheme, + config['DEFAULT']['username'], + password, url, repo) @contextlib.contextmanager From d2286ca093bd054c3fff8dbc33521f4272f033ad Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 24 Jan 2020 22:30:30 +0530 Subject: [PATCH 69/87] functional-tests: Mark backups and security with @system Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- functional_tests/features/backups.feature | 2 +- functional_tests/features/security.feature | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/functional_tests/features/backups.feature b/functional_tests/features/backups.feature index a62fa7506..0ff1d80dc 100644 --- a/functional_tests/features/backups.feature +++ b/functional_tests/features/backups.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@backups +@backups @system Feature: Backups module Create and restore backups. diff --git a/functional_tests/features/security.feature b/functional_tests/features/security.feature index 51a8bbc7c..c770771e3 100644 --- a/functional_tests/features/security.feature +++ b/functional_tests/features/security.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@security @essential +@security @essential @system Feature: Security Configure security options. From 9d653d87eccafee083e8bcbea80b63aa5fdb480e Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Mon, 13 Jan 2020 12:03:25 +0200 Subject: [PATCH 70/87] storage: Make external disk mounts accessible by other users - samba app doesn't need anymore to change mount permissions Fixes #1692 (in a different way) Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/samba | 10 ---------- actions/storage | 17 +++++++++++++++++ plinth/modules/storage/__init__.py | 3 ++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/actions/samba b/actions/samba index c7d79cdd5..f225aea3c 100755 --- a/actions/samba +++ b/actions/samba @@ -24,7 +24,6 @@ import configparser import json import os import shutil -import stat import subprocess SHARES_CONF_BACKUP_FILE = '/var/lib/plinth/backups-data/samba-shares-dump.conf' @@ -120,8 +119,6 @@ def _create_share(mount_point, share_type, windows_filesystem=False): share_path = os.path.join(mount_point, shares_path, subdir) os.makedirs(share_path, exist_ok=True) - _make_mounts_readable_by_others(mount_point) - # FAT and NTFS partitions don't support setting permissions if not windows_filesystem: if share_type in ['open', 'group']: @@ -235,13 +232,6 @@ def _get_shares_path(mount_point): return 'FreedomBox/shares/' -def _make_mounts_readable_by_others(mount_point): - """Make mounted devices readable/traversible by others.""" - dirname = os.path.dirname(mount_point) - stats = os.stat(dirname) - os.chmod(dirname, stats.st_mode | stat.S_IROTH | stat.S_IXOTH) - - def _set_open_share_permissions(directory): """Set file and directory permissions for open share.""" shutil.chown(directory, group='freedombox-share') diff --git a/actions/storage b/actions/storage index 181f431f7..f645a0e1b 100755 --- a/actions/storage +++ b/actions/storage @@ -23,6 +23,7 @@ import argparse import json import os import re +import stat import subprocess import sys @@ -34,6 +35,8 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + subparsers.add_parser('setup', help='Configure storage after install') + subparser = subparsers.add_parser( 'is-partition-expandable', help='Return whether a given partition can be expanded') @@ -320,6 +323,20 @@ def umount_all_filesystems_of_drive(drive_object_path): umount_filesystem(obj.get_filesystem()) +def subcommand_setup(_): + """Configure storage.""" + # create udisks2 default mount directory + mounts_directory = '/media/root' + try: + os.mkdir(mounts_directory) + except FileExistsError: + pass + + # make the directory readable and traversible by other users + stats = os.stat(mounts_directory) + os.chmod(mounts_directory, stats.st_mode | stat.S_IROTH | stat.S_IXOTH) + + def subcommand_usage_info(_): """Get information about disk space usage.""" command = [ diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index a162d3b35..adbc66971 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -32,7 +32,7 @@ from plinth.utils import format_lazy, import_from_gi from .manifest import backup # noqa, pylint: disable=unused-import -version = 3 +version = 4 name = _('Storage') @@ -277,6 +277,7 @@ def get_error_message(error): def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages, skip_recommends=True) + helper.call('post', actions.superuser_run, 'storage', ['setup']) helper.call('post', app.enable) disks = get_disks() root_device = get_root_device(disks) From f3d2654a13bae5f44cbfede85d104cb34704ddcb Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:00:44 +0000 Subject: [PATCH 71/87] networks: form for configuring router Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- debian/control | 2 + plinth/modules/networks/forms.py | 58 ++++++++++++++ .../templates/router_configuration.html | 75 +++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 plinth/modules/networks/templates/router_configuration.html diff --git a/debian/control b/debian/control index 4ba7e337d..5840e9a03 100644 --- a/debian/control +++ b/debian/control @@ -31,6 +31,7 @@ Build-Depends: python3-django-stronghold (>= 0.3.0), python3-flake8, python3-gi, + python3-markupsafe, python3-paramiko, python3-psutil, python3-pytest, @@ -99,6 +100,7 @@ Depends: python3-django-captcha, python3-django-stronghold, python3-gi, + python3-markupsafe, python3-paramiko, python3-psutil, python3-requests, diff --git a/plinth/modules/networks/forms.py b/plinth/modules/networks/forms.py index 5cac3ab4c..e3647d74e 100644 --- a/plinth/modules/networks/forms.py +++ b/plinth/modules/networks/forms.py @@ -18,6 +18,7 @@ from django import forms from django.core import validators from django.utils.translation import ugettext_lazy as _, ugettext_lazy +from markupsafe import Markup from plinth import cfg from plinth import network @@ -296,3 +297,60 @@ requires clients to have the password to connect.'), 'passphrase': self.cleaned_data['passphrase'], } return settings + + +class RouterConfigurationWizardForm(forms.Form): + """ + Form to suggest router configuration depending on wan + connectivity/specific setup. The choice will affect + future suggestions during the setup process and other apps. + """ + router_config = forms.ChoiceField( + initial='dmz', + label=_('Preferred router configuration'), + choices=[ + ( + 'dmz', + Markup(format_lazy( + _('Use DMZ feature to forward all traffic' + '

Most routers provide a ' + 'configuration setting called DMZ. This will allow the ' + 'router to forward all incoming traffic from the ' + 'internet to a single IP address such as the ' + '{box_name}\'s address. First remember to configure a ' + 'static local IP address for your {box_name} in your ' + 'router\'s configuration.

'), + box_name=cfg.box_name + )), + ), + ( + 'port_forwarding', + Markup(format_lazy( + _('Forward Specific Traffic as needed by each ' + 'application' + '

You may alternatively choose to ' + 'forward only specific traffic to your {box_name}. ' + 'This is ideal if you have other servers like ' + '{box_name} in your network or if your router does not ' + 'support DMZ feature. All applications that provide a ' + 'web interface need you to forward traffic from ports ' + '80 and 443 to work. Each of the other applications ' + 'will suggest you which port(s) need to be forwarded ' + 'for that application to work.

'), + box_name=cfg.box_name + )) + ), + ( + 'not_configured', + Markup( + _('Router is currently unconfigured' + '

Choose this if you have not ' + 'configured or are unable to configure the router ' + 'currently and wish to be reminded later. Some of ' + 'the other configuration steps may fail.

') + ) + ), + ], + required=True, + widget=forms.RadioSelect, + ) diff --git a/plinth/modules/networks/templates/router_configuration.html b/plinth/modules/networks/templates/router_configuration.html new file mode 100644 index 000000000..82afc3427 --- /dev/null +++ b/plinth/modules/networks/templates/router_configuration.html @@ -0,0 +1,75 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} +{% load static %} + +{% block content %} +

{% trans "Setup FreedomBox Behind a Router" %}

+

+ {% blocktrans trimmed %} + Your Freedombox gets its internet connection from your router via Wi-Fi or Ethernet cable. + This is a typical home setup. + {% endblocktrans %} +

+

+ {% blocktrans trimmed %} + With this setup, any device on the internet trying to reach your Freedombox will have to + go through your router. The router will need to be configured to forward all traffic + it receives so that Freedombox provides the services. + {% endblocktrans %} +

+

+ {% blocktrans trimmed %} + If you don't have control over your router, choose not to configure it. To see options, + to overcome this limitation, choose 'no public address' option in Internet connection + type selection. + {% endblocktrans %} +

+ +

{% trans "Choose How You Wish to Configure Your Router" %}

+

+ {% blocktrans trimmed %} + You will need to login to your router's administration + console provided by the router. This may look like + http://192.168.168.0.1. + The username and password is configured by you + when you first setup the router. For many routers, this + information is printed at the back of the router. If you + don't remember the credentials or the IP address of the + router, you may decide to reset it and set it up freshly. + Lookup your router model number and search online for the + router's manual. This will provide full instructions on + how to perform this task. + {% endblocktrans %} +

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + + +
+ +{% endblock %} From cabfcbc6efe1f0354a572205112cd4afc2f2f76f Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:06:14 +0000 Subject: [PATCH 72/87] networks: create view & url for new form Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- plinth/modules/networks/networks.py | 21 ++++++++++++++++++++- plinth/modules/networks/urls.py | 4 ++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/plinth/modules/networks/networks.py b/plinth/modules/networks/networks.py index ce494ec57..66a1c6ab4 100644 --- a/plinth/modules/networks/networks.py +++ b/plinth/modules/networks/networks.py @@ -28,7 +28,7 @@ from plinth import network from plinth.modules import networks from .forms import (ConnectionTypeSelectForm, EthernetForm, GenericForm, - PPPoEForm, WifiForm) + PPPoEForm, WifiForm, RouterConfigurationWizardForm) logger = Logger(__name__) @@ -416,3 +416,22 @@ def delete(request, uuid): 'title': _('Delete Connection'), 'name': name }) + + +def router_configuration_help_page(request): + """ + Show the router configuration wizard page/form. + Used both for fistboot step and same networks page. + """ + if request.method == "POST": + resp = reverse_lazy('networks:index') + + return redirect(resp) + + else: + template_kwargs = { + 'form': RouterConfigurationWizardForm, + } + + return TemplateResponse(request, 'router_configuration.html', + template_kwargs) diff --git a/plinth/modules/networks/urls.py b/plinth/modules/networks/urls.py index caab595d0..56c325aca 100644 --- a/plinth/modules/networks/urls.py +++ b/plinth/modules/networks/urls.py @@ -19,6 +19,7 @@ URLs for the Network module """ from django.conf.urls import url +from stronghold.decorators import public from . import networks as views @@ -41,4 +42,7 @@ urlpatterns = [ r'(?P[^/]+)/)?$', views.add_wifi, name='add_wifi'), url(r'^sys/networks/(?P[\w.@+-]+)/delete/$', views.delete, name='delete'), + url(r'^sys/networks/router-setup-guide/$', + views.router_configuration_help_page, + name='router_setup'), ] From 09545155a0a2b93b283855ac5e1d47d7a7fe7eff Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:07:43 +0000 Subject: [PATCH 73/87] networks: add link to main page for router config form Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- .../networks/templates/connections_list.html | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/plinth/modules/networks/templates/connections_list.html b/plinth/modules/networks/templates/connections_list.html index 11587bc3e..a5b8319c6 100644 --- a/plinth/modules/networks/templates/connections_list.html +++ b/plinth/modules/networks/templates/connections_list.html @@ -55,6 +55,29 @@ {% endblock %} {% block configuration %} +

{% trans "Freedombox Internet Connectivity" %}

+

+ {% blocktrans trimmed %} + The following best describes how your Freedombox is connected in your + network. This information is used only to suggest you necessary configuration + actions. + {% endblocktrans %} +

+ +

+ {% blocktrans trimmed %} + Your Freedombox gets its internet from your Router via WiFi or Ethernet + cable. This is a typical home setup. + {% endblocktrans %} +

+ +

{% trans "Connections" %}

From e771ca3b8ec186de79bd35dc71ac4cdb37645a60 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:11:52 +0000 Subject: [PATCH 74/87] networks: add first boot step for router config helper Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- plinth/modules/networks/__init__.py | 6 ++++++ plinth/modules/networks/urls.py | 3 +++ 2 files changed, 9 insertions(+) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 68a12dae3..5879a4513 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -33,6 +33,12 @@ is_essential = True managed_packages = ['network-manager', 'batctl'] +first_boot_steps = [{ + 'id': 'router_setup_wizard', + 'url': 'networks:firstboot_router_setup', + 'order': 4, +}] + name = _('Networks') description = [ diff --git a/plinth/modules/networks/urls.py b/plinth/modules/networks/urls.py index 56c325aca..6c528b349 100644 --- a/plinth/modules/networks/urls.py +++ b/plinth/modules/networks/urls.py @@ -45,4 +45,7 @@ urlpatterns = [ url(r'^sys/networks/router-setup-guide/$', views.router_configuration_help_page, name='router_setup'), + url(r'^sys/networks/firstboot/$', + public(views.router_configuration_help_page), + name='firstboot_router_setup'), ] From 33f51142411bfb1b3866e6bbae9fb8b57e9926e6 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:22:13 +0000 Subject: [PATCH 75/87] networks: modify as first boot wizard step Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- plinth/modules/networks/networks.py | 31 ++++++++++++--- ...html => router_configuration_content.html} | 14 ------- .../router_configuration_firstboot.html | 38 +++++++++++++++++++ .../router_configuration_update.html | 37 ++++++++++++++++++ 4 files changed, 100 insertions(+), 20 deletions(-) rename plinth/modules/networks/templates/{router_configuration.html => router_configuration_content.html} (90%) create mode 100644 plinth/modules/networks/templates/router_configuration_firstboot.html create mode 100644 plinth/modules/networks/templates/router_configuration_update.html diff --git a/plinth/modules/networks/networks.py b/plinth/modules/networks/networks.py index 66a1c6ab4..0adc732c5 100644 --- a/plinth/modules/networks/networks.py +++ b/plinth/modules/networks/networks.py @@ -25,7 +25,7 @@ from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST from plinth import network -from plinth.modules import networks +from plinth.modules import networks, first_boot from .forms import (ConnectionTypeSelectForm, EthernetForm, GenericForm, PPPoEForm, WifiForm, RouterConfigurationWizardForm) @@ -423,15 +423,34 @@ def router_configuration_help_page(request): Show the router configuration wizard page/form. Used both for fistboot step and same networks page. """ + is_firstboot = True \ + if 'firstboot' in request.build_absolute_uri() else False + if request.method == "POST": - resp = reverse_lazy('networks:index') + if is_firstboot: + resp = reverse_lazy(first_boot.next_step()) + else: + resp = reverse_lazy('networks:index') + messages.success(request, _('Router configuration type saved.')) return redirect(resp) else: - template_kwargs = { - 'form': RouterConfigurationWizardForm, + html = "router_configuration_update.html" + initial = { + "router_config": kvstore.get_default( + networks.ROUTER_CONFIGURATION_TYPE_KEY, 'dmz'), } + template_kwargs = { + 'form': RouterConfigurationWizardForm(initial=initial), + } + if is_firstboot: + html = "router_configuration_firstboot.html" - return TemplateResponse(request, 'router_configuration.html', - template_kwargs) + # mark step done on firstboot visit to get the next_step + first_boot.mark_step_done('router_setup_wizard') + template_kwargs.update({ + 'first_boot_next_step': reverse_lazy(first_boot.next_step()), + }) + + return TemplateResponse(request, html, template_kwargs) diff --git a/plinth/modules/networks/templates/router_configuration.html b/plinth/modules/networks/templates/router_configuration_content.html similarity index 90% rename from plinth/modules/networks/templates/router_configuration.html rename to plinth/modules/networks/templates/router_configuration_content.html index 82afc3427..da72708cb 100644 --- a/plinth/modules/networks/templates/router_configuration.html +++ b/plinth/modules/networks/templates/router_configuration_content.html @@ -1,4 +1,3 @@ -{% extends "base.html" %} {% comment %} # # This file is part of FreedomBox. @@ -22,7 +21,6 @@ {% load i18n %} {% load static %} -{% block content %}

{% trans "Setup FreedomBox Behind a Router" %}

{% blocktrans trimmed %} @@ -61,15 +59,3 @@ how to perform this task. {% endblocktrans %}

- -
- {% csrf_token %} - - {{ form|bootstrap }} - - - -
- -{% endblock %} diff --git a/plinth/modules/networks/templates/router_configuration_firstboot.html b/plinth/modules/networks/templates/router_configuration_firstboot.html new file mode 100644 index 000000000..f3b6ba607 --- /dev/null +++ b/plinth/modules/networks/templates/router_configuration_firstboot.html @@ -0,0 +1,38 @@ +{% extends "base_firstboot.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} +{% load static %} + +{% block content %} + {% include "router_configuration_content.html" %} + +
+ {% csrf_token %} + + {{ form|bootstrap }} + + {% trans "skip this step" %} + +
+ +{% endblock %} diff --git a/plinth/modules/networks/templates/router_configuration_update.html b/plinth/modules/networks/templates/router_configuration_update.html new file mode 100644 index 000000000..4983ef15d --- /dev/null +++ b/plinth/modules/networks/templates/router_configuration_update.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% comment %} +# +# 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 . +# +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} +{% load static %} + +{% block content %} + {% include "router_configuration_content.html" %} + +
+ {% csrf_token %} + + {{ form|bootstrap }} + + +
+ +{% endblock %} From ed6cd38c22b950a5fea1978195468425deb1b31f Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 10 Jan 2020 12:23:53 +0000 Subject: [PATCH 76/87] networks: save router config to kvstore Closes: #1695 Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- plinth/modules/networks/__init__.py | 2 ++ plinth/modules/networks/forms.py | 1 - plinth/modules/networks/networks.py | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 5879a4513..fcca30165 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -54,6 +54,8 @@ manual_page = 'Networks' app = None +ROUTER_CONFIGURATION_TYPE_KEY = 'networks_router_configuration_type' + class NetworksApp(app_module.App): """FreedomBox app for Networks.""" diff --git a/plinth/modules/networks/forms.py b/plinth/modules/networks/forms.py index e3647d74e..a460f5a47 100644 --- a/plinth/modules/networks/forms.py +++ b/plinth/modules/networks/forms.py @@ -306,7 +306,6 @@ class RouterConfigurationWizardForm(forms.Form): future suggestions during the setup process and other apps. """ router_config = forms.ChoiceField( - initial='dmz', label=_('Preferred router configuration'), choices=[ ( diff --git a/plinth/modules/networks/networks.py b/plinth/modules/networks/networks.py index 0adc732c5..937fc68af 100644 --- a/plinth/modules/networks/networks.py +++ b/plinth/modules/networks/networks.py @@ -15,7 +15,7 @@ # along with this program. If not, see . # -from logging import Logger +import logging from django.contrib import messages from django.shortcuts import redirect @@ -24,13 +24,13 @@ from django.urls import reverse_lazy from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST -from plinth import network +from plinth import network, kvstore from plinth.modules import networks, first_boot from .forms import (ConnectionTypeSelectForm, EthernetForm, GenericForm, PPPoEForm, WifiForm, RouterConfigurationWizardForm) -logger = Logger(__name__) +logger = logging.getLogger(__name__) def index(request): @@ -426,7 +426,15 @@ def router_configuration_help_page(request): is_firstboot = True \ if 'firstboot' in request.build_absolute_uri() else False - if request.method == "POST": + if request.method == 'POST' and request.POST['router_config']: + form = RouterConfigurationWizardForm(request.POST) + if form.is_valid(): + logger.info('Updating router configuration setup with value: %s' % + request.POST['router_config']) + kvstore.set( + networks.ROUTER_CONFIGURATION_TYPE_KEY, + request.POST['router_config'] + ) if is_firstboot: resp = reverse_lazy(first_boot.next_step()) else: From 9c33567a54566348145683424d3cd8ec50a67155 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 26 Jan 2020 17:00:38 -0500 Subject: [PATCH 77/87] networks: Update text for router setup - Move router setup below connections - Use default style for Update button - Use box_name in templates - Add 2nd example of router IP - Minor updates to text Signed-off-by: James Valleroy --- plinth/modules/networks/forms.py | 2 +- .../networks/templates/connections_list.html | 52 ++++++----- .../router_configuration_content.html | 90 +++++++++++-------- 3 files changed, 82 insertions(+), 62 deletions(-) diff --git a/plinth/modules/networks/forms.py b/plinth/modules/networks/forms.py index a460f5a47..106645e3c 100644 --- a/plinth/modules/networks/forms.py +++ b/plinth/modules/networks/forms.py @@ -334,7 +334,7 @@ class RouterConfigurationWizardForm(forms.Form): 'support DMZ feature. All applications that provide a ' 'web interface need you to forward traffic from ports ' '80 and 443 to work. Each of the other applications ' - 'will suggest you which port(s) need to be forwarded ' + 'will suggest which port(s) need to be forwarded ' 'for that application to work.

'), box_name=cfg.box_name )) diff --git a/plinth/modules/networks/templates/connections_list.html b/plinth/modules/networks/templates/connections_list.html index a5b8319c6..14676b7d5 100644 --- a/plinth/modules/networks/templates/connections_list.html +++ b/plinth/modules/networks/templates/connections_list.html @@ -55,30 +55,6 @@ {% endblock %} {% block configuration %} -

{% trans "Freedombox Internet Connectivity" %}

-

- {% blocktrans trimmed %} - The following best describes how your Freedombox is connected in your - network. This information is used only to suggest you necessary configuration - actions. - {% endblocktrans %} -

- -

- {% blocktrans trimmed %} - Your Freedombox gets its internet from your Router via WiFi or Ethernet - cable. This is a typical home setup. - {% endblocktrans %} -

- - -

{% trans "Connections" %}

@@ -144,4 +120,32 @@ {% include "connections_diagram.html" %} +

+ {% blocktrans trimmed %} + {{ box_name }} Internet Connectivity + {% endblocktrans %} +

+

+ {% blocktrans trimmed %} + The following best describes how your {{ box_name }} is connected in your + network. This information is used only to suggest necessary configuration + actions. + {% endblocktrans %} +

+ +

+ {% blocktrans trimmed %} + Your {{ box_name }} gets its internet from your Router via WiFi or + Ethernet cable. This is a typical home setup. + {% endblocktrans %} +

+ + + {% endblock %} diff --git a/plinth/modules/networks/templates/router_configuration_content.html b/plinth/modules/networks/templates/router_configuration_content.html index da72708cb..8084823fe 100644 --- a/plinth/modules/networks/templates/router_configuration_content.html +++ b/plinth/modules/networks/templates/router_configuration_content.html @@ -21,41 +21,57 @@ {% load i18n %} {% load static %} -

{% trans "Setup FreedomBox Behind a Router" %}

-

- {% blocktrans trimmed %} - Your Freedombox gets its internet connection from your router via Wi-Fi or Ethernet cable. - This is a typical home setup. - {% endblocktrans %} -

-

- {% blocktrans trimmed %} - With this setup, any device on the internet trying to reach your Freedombox will have to - go through your router. The router will need to be configured to forward all traffic - it receives so that Freedombox provides the services. - {% endblocktrans %} -

-

- {% blocktrans trimmed %} - If you don't have control over your router, choose not to configure it. To see options, - to overcome this limitation, choose 'no public address' option in Internet connection - type selection. - {% endblocktrans %} -

+

+ {% blocktrans trimmed %} + Setup {{ box_name }} Behind a Router + {% endblocktrans %} +

-

{% trans "Choose How You Wish to Configure Your Router" %}

-

- {% blocktrans trimmed %} - You will need to login to your router's administration - console provided by the router. This may look like - http://192.168.168.0.1. - The username and password is configured by you - when you first setup the router. For many routers, this - information is printed at the back of the router. If you - don't remember the credentials or the IP address of the - router, you may decide to reset it and set it up freshly. - Lookup your router model number and search online for the - router's manual. This will provide full instructions on - how to perform this task. - {% endblocktrans %} -

+

+ {% blocktrans trimmed %} + Your {{ box_name }} gets its internet connection from your router via + Wi-Fi or Ethernet cable. This is a typical home setup. + {% endblocktrans %} +

+ +

+ {% blocktrans trimmed %} + With this setup, any device on the internet trying to reach your + {{ box_name }} will have to go through your router. The router will need + to be configured to forward all traffic it receives so that {{ box_name }} + provides the services. + {% endblocktrans %} +

+ +

+ {% blocktrans trimmed %} + If you don't have control over your router, choose not to configure it. To + see options, to overcome this limitation, choose 'no public address' option + in Internet connection type selection. + {% endblocktrans %} +

+ +

{% trans "Choose How You Wish to Configure Your Router" %}

+ +

+ {% blocktrans trimmed %} + You will need to login to your router's administration console provided by + the router. This may look like one of the following: + {% endblocktrans %} +

+ + + +

+ {% blocktrans trimmed %} + The username and password is configured by you when you first setup the + router. For many routers, this information is printed at the back of the + router. If you don't remember the credentials or the IP address of the + router, you may decide to reset it and set it up freshly. Lookup your router + model number and search online for the router's manual. This will provide + full instructions on how to perform this task. + {% endblocktrans %} +

From 3f5035c6d57f66c66aa745e33affa8c8dde0904c Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Mon, 27 Jan 2020 11:07:11 +0200 Subject: [PATCH 78/87] gitweb: Add link to the manual page Signed-off-by: Veiko Aasa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/gitweb/__init__.py | 2 ++ plinth/modules/gitweb/views.py | 1 + 2 files changed, 3 insertions(+) diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 2f8b15408..b4e5e43b0 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -59,6 +59,8 @@ description = [ 'Git tutorial.') ] +manual_page = 'GitWeb' + group = ('git-access', _('Read-write access to Git repositories')) app = None diff --git a/plinth/modules/gitweb/views.py b/plinth/modules/gitweb/views.py index 469f9ac42..d2aab09dd 100644 --- a/plinth/modules/gitweb/views.py +++ b/plinth/modules/gitweb/views.py @@ -44,6 +44,7 @@ class GitwebAppView(views.AppView): show_status_block = False template_name = 'gitweb_configure.html' icon_filename = gitweb.icon_filename + manual_page = gitweb.manual_page def get_context_data(self, *args, **kwargs): """Add repositories to the context data.""" From b3b2b6fe84260184f76b96ecf2994c6ff1577afd Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Mon, 27 Jan 2020 10:32:18 +0200 Subject: [PATCH 79/87] gitweb: Fix functional tests if git user and email is not configured Signed-off-by: Veiko Aasa Reviewed-by: Sunil Mohan Adapa --- functional_tests/support/application.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index 71109c565..b89b1c75e 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -474,7 +474,8 @@ def gitweb_repo_is_writable(repo, with_auth=False, url_git_extension=False): cwd = os.path.join(cwd, 'test-project') prepare_git_repo_commands = [ 'git init -q', 'git config http.sslVerify false', - 'git commit -q --allow-empty --author "Tester <>" -m "test"' + 'git -c "user.name=Tester" -c "user.email=tester" ' + 'commit -q --allow-empty -m "test"' ] for command in prepare_git_repo_commands: subprocess.run(command, shell=True, check=True, cwd=cwd) From a9ab05bde31ff44196296aae176c0152e0bf8bc7 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 26 Jan 2020 10:57:04 -0500 Subject: [PATCH 80/87] bind: Enable systemd sandbox options for bind9 service Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../system/bind9.service.d/freedombox.conf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf diff --git a/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf b/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf new file mode 100644 index 000000000..09e2117cd --- /dev/null +++ b/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf @@ -0,0 +1,15 @@ +[Service] +LockPersonality=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictRealtime=yes +SystemCallArchitectures=native From a33db57993a845ca276c2c984af74205cd7bea7a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 26 Jan 2020 11:40:58 -0500 Subject: [PATCH 81/87] functional_tests: Update geckodriver version to v0.26.0 Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- functional_tests/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functional_tests/install.sh b/functional_tests/install.sh index 68675fe98..d656d94ae 100755 --- a/functional_tests/install.sh +++ b/functional_tests/install.sh @@ -13,7 +13,7 @@ pip3 install splinter pytest-splinter pytest-bdd pytest-xvfb echo "Installing geckodriver" ( DL_DIR=/tmp/gecko - GECKO_VERSION="v0.24.0" + GECKO_VERSION="v0.26.0" FILENAME="geckodriver-${GECKO_VERSION}-linux64.tar.gz" GECKO_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKO_VERSION/$FILENAME" From 57cab47ffc13679428abaf8f3e7b637cea867efe Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 18:55:04 -0500 Subject: [PATCH 82/87] locale: Update translation strings Signed-off-by: James Valleroy --- plinth/locale/bg/LC_MESSAGES/django.po | 732 +++++++++++---- plinth/locale/bn/LC_MESSAGES/django.po | 730 +++++++++++---- plinth/locale/cs/LC_MESSAGES/django.po | 947 ++++++++++++++----- plinth/locale/da/LC_MESSAGES/django.po | 918 ++++++++++++++----- plinth/locale/de/LC_MESSAGES/django.po | 950 ++++++++++++++----- plinth/locale/django.pot | 730 +++++++++++---- plinth/locale/el/LC_MESSAGES/django.po | 968 +++++++++++++++----- plinth/locale/es/LC_MESSAGES/django.po | 937 ++++++++++++++----- plinth/locale/fa/LC_MESSAGES/django.po | 792 ++++++++++++---- plinth/locale/fake/LC_MESSAGES/django.po | 926 ++++++++++++++----- plinth/locale/fr/LC_MESSAGES/django.po | 963 ++++++++++++++----- plinth/locale/gl/LC_MESSAGES/django.po | 732 +++++++++++---- plinth/locale/gu/LC_MESSAGES/django.po | 766 ++++++++++++---- plinth/locale/hi/LC_MESSAGES/django.po | 928 ++++++++++++++----- plinth/locale/hu/LC_MESSAGES/django.po | 942 ++++++++++++++----- plinth/locale/id/LC_MESSAGES/django.po | 796 ++++++++++++---- plinth/locale/it/LC_MESSAGES/django.po | 790 ++++++++++++---- plinth/locale/ja/LC_MESSAGES/django.po | 730 +++++++++++---- plinth/locale/kn/LC_MESSAGES/django.po | 730 +++++++++++---- plinth/locale/lt/LC_MESSAGES/django.po | 730 +++++++++++---- plinth/locale/nb/LC_MESSAGES/django.po | 947 ++++++++++++++----- plinth/locale/nl/LC_MESSAGES/django.po | 953 ++++++++++++++----- plinth/locale/pl/LC_MESSAGES/django.po | 802 ++++++++++++---- plinth/locale/pt/LC_MESSAGES/django.po | 797 ++++++++++++---- plinth/locale/ru/LC_MESSAGES/django.po | 947 ++++++++++++++----- plinth/locale/sl/LC_MESSAGES/django.po | 764 +++++++++++---- plinth/locale/sv/LC_MESSAGES/django.po | 938 ++++++++++++++----- plinth/locale/ta/LC_MESSAGES/django.po | 730 +++++++++++---- plinth/locale/te/LC_MESSAGES/django.po | 881 +++++++++++++----- plinth/locale/tr/LC_MESSAGES/django.po | 946 ++++++++++++++----- plinth/locale/uk/LC_MESSAGES/django.po | 766 ++++++++++++---- plinth/locale/zh_Hans/LC_MESSAGES/django.po | 934 ++++++++++++++----- 32 files changed, 20610 insertions(+), 6532 deletions(-) diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 489ea22bf..23223a2df 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1560,33 +1569,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1595,8 +1604,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2160,6 +2169,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2454,7 +2467,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2789,68 +2802,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2858,179 +2871,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3081,14 +3127,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3123,22 +3170,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3249,7 +3302,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3315,13 +3368,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3339,32 +3392,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3905,82 +4040,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4064,7 +4123,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4078,7 +4137,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4095,7 +4154,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4117,11 +4176,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4816,39 +4875,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5190,10 +5249,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5506,11 +5561,326 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Уеб Сървър" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index d44c0795b..9e474ac93 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -342,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -368,6 +368,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -588,8 +589,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -880,6 +882,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1108,16 +1114,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1204,7 +1210,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1367,7 +1376,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1459,7 +1468,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1553,33 +1562,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1588,8 +1597,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2153,6 +2162,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2447,7 +2460,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2782,68 +2795,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2851,179 +2864,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3074,14 +3120,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3116,22 +3163,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3242,7 +3295,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3308,13 +3361,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3332,32 +3385,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3898,82 +4033,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4057,7 +4116,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4071,7 +4130,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4088,7 +4147,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4110,11 +4169,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4807,39 +4866,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5181,10 +5240,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5497,11 +5552,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 9045dc882..de8fa7505 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2019-10-26 17:53+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech výuky Gitu." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Přístup do Git repozitářů pro čtení a zápis" @@ -1787,35 +1796,35 @@ msgstr "Nevratně smazat tento repozitář?" msgid "Delete %(name)s" msgstr "Smazat %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Repozitář vytvořen." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Repozitář upraven." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} smazáno." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" @@ -1824,8 +1833,8 @@ msgstr "{name} se nepodařilo smazat: {error}" msgid "Documentation" msgstr "Dokumentace" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Příručka" @@ -2495,6 +2504,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Smazat" @@ -2859,7 +2872,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Pokud je vypnuto, postavy hráčů nemohou zemřít nebo se zranit." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adresa" @@ -3239,11 +3252,11 @@ msgstr "Vše" msgid "All web apps" msgstr "Všechny webové aplikace" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Sítě" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3251,38 +3264,38 @@ msgstr "" "Nastavit síťová zařízení. Připojit k Internetu přes ethernet, WiFi nebo " "PPPoE. Sdílet toto připojení s ostatními zařízeními na síti." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "S použitím DNSSEC na IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Typ připojení" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Název připojení" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fyzické rozhraní" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Síťové zařízení ke kterému má toto spojení být přidruženo." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Zóna brány firewall" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3290,21 +3303,21 @@ msgstr "" "Zóna brány firewall řídí které služby jsou přes tato rozhraní dostupné. Jako " "Vnitřní vyberte pouze sítě, kterým důvěřujete." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Vnější" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Vnitřní" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Způsob IPv4 adresování" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3316,19 +3329,19 @@ msgstr "" "bude vystupovat jako směrovač, poskytovat nastavení klientům na této síti a " "sdílet jim připojení k Internetu." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automaticky (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Sdílené" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Síťová maska" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3336,21 +3349,21 @@ msgstr "" "Volitelná hodnota. Pokud není vyplněno, bude použita výchozí maska sítě dané " "třídy IP adresy." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Brána" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Volitelná hodnota." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3358,11 +3371,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Pomocný DNS server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3370,11 +3383,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Způsob IPv6 adresování" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3383,27 +3396,27 @@ msgstr "" "„Automatické“ metody způsobí, že {box_name} získá nastavení z této sítě a " "bude na ní klientem." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automaticky" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automaticky, pouze DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignorovat" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Předpona" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Hodnota z rozmezí 1 až 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3411,7 +3424,7 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3419,54 +3432,54 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- vybrat --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Viditelný název sítě." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Režim" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastrukturní" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Přístupový bod" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Dočasný" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frekvenční pásmo" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanál" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3474,11 +3487,11 @@ msgstr "" "Nemusí být vyplněné. Bezdrátový kanál ve vybraném frekvenčním pásmu na který " "omezit. Nevyplněno nebo 0 (nula) znamená automatický výběr." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3488,11 +3501,11 @@ msgstr "" "připojování k přístupovému bodu, připojit pouze pokud BSSID přístupového " "bodu odpovídá tomu zadanému. Příklad: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Režim ověřování" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3500,14 +3513,49 @@ msgstr "" "Pokud je bezdrátová síť zabezpečená a pro připojení vyžaduje heslo, vyberte " "WPA." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Otevřené" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Stávající nastavení sítě" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Síťová připojení" @@ -3560,14 +3608,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Deaktivace připojení se nezdařila: Připojení nenalezeno." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi sítě poblíž" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Přidat připojení" @@ -3602,22 +3651,30 @@ msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno." msgid "Delete Connection" msgstr "Smazat připojení" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Nastavení Tor jsou aktualizována" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Upravit připojení" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Upravit" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Deaktivovat" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Aktivovat" @@ -3728,7 +3785,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Výchozí" @@ -3804,13 +3861,13 @@ msgstr "Mezery" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3828,32 +3885,117 @@ msgstr "Zobrazit připojení %(name)s" msgid "Computer" msgstr "Počítač" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Připojení" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Smazat připojení %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktivní" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Neaktivní" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Aktualizovat" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Vytvořit…" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s je aktuální." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtuální soukromá síť" @@ -4511,117 +4653,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro poskytuje různé SIP služby které může využít softwarový SIP telefon " -"pro poskytování zvukových a videohovorů stejně jako oznamování přítomnosti a " -"okamžité textové komunikace. repro poskytuje server a SIP uživatelské účty " -"které klienti mohu použít pro oznámení své přítomnosti. Funguje také jako " -"proxy pro federovanou SIP komunikaci s ostatními servery na Internetu " -"podobně jako je tomu u e-mailu." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Pro uskutečnění SIP volání je třeba klientská aplikace. Ke klientům, kteří " -"jsou k dispozici patří Jitsi (pro " -"počítače) a CSipSimple (pro Android telefony)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Upozornění: Před použitím repro je třeba, aby pomocí webový nastavovací panel byli nastavení " -"uživatelé a domény. Uživatelé ve skupiněadmin budou schopní se " -"přihlásit do nastavovacího panelu repro. Po nastavení domény je třeba službu " -"repro restartovat. Službu vypněte a znovu zapněte." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi je sada open-source projektů která umožňuje snadno vytvořit a nasadit " -"řešení pro zabezpečenou videokonferenci. V srdci Jitsi jsou Jitsi " -"Videobridge a Jitsi Meet, které umožňují mít konference na Internetu, " -"zatímco ostatní projekty v komunitě dodávají další funkce, jako například " -"zvuk, volání, záznam a souběžné vysílání po více médiích." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Úložiště Unhosted" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore je server pro nehostované webové " -"aplikace. Myšlenkou je oddělit webové aplikace od dat. Nezávisle na tom, kde " -"je webová aplikace poskytována, data mohou být ukládána na nehostovaném " -"úložném serveru, který si uživatel vybere. Pomocí reStore, se váš {box_name} " -"stane unhosted úložným serverem." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Účty je možné vytvářet a upravovat ve webovém rozhraní " -"reStore." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4730,7 +4761,7 @@ msgstr "Sdílené" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4746,7 +4777,7 @@ msgid "Used" msgstr "Použito" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4763,7 +4794,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4791,13 +4822,13 @@ msgstr "Sdílení přidáno." msgid "Action" msgstr "Akce" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Přidat sdílení" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5587,49 +5618,49 @@ msgstr "Není umožněno použít požadovanou volbu." msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid repository name." msgid "Invalid directory name." msgstr "Neplatný název repozitáře." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Složka pro stahování" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Složka pro stahování" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Sdílené" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6038,10 +6069,6 @@ msgstr "" "Transmision obsluhuje sdílení souborů Bitorrent. Poznamenejme, že BitTorrent " "není anonymní." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Složka pro stahování" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6394,11 +6421,392 @@ msgstr "Změnit heslo" msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Neplatný kite název" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Zveřejnit klíč" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Klíč zveřejněn na server s klíči." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Seznam IP adres, jednotlivé položky oddělujte mezerou" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Chat server" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Vytvořit připojení" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Nyní není nastavené žádné sdílení." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Přidat nový uvaděč" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Chatovací klient" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Ověření vůči vzdálenému serveru se nezdařilo." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Přidat nový uvaděč" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Přidat připojení" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC klient" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Opravdu chcete tento repozitář odebrat?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Opravdu chcete tento repozitář odebrat?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Chatovací klient" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Vytvořit připojení" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Doména serveru" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Vyberte ověřený SSH veřejný klíč" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Doména serveru" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Přidat nový uvaděč" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Sdílení s tímto názvem už existuje." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-mailový klient" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Aktualizovat nastavení" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-mailový klient" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Smazat vše" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archiv smazán." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Repozitář nenalezen" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Uživatelem určená služba přidána" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Typ připojení" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Aktualizovat nastavení" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Upravit připojení" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Smazat připojení" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Sdílení smazáno." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Obecné" @@ -6747,6 +7155,104 @@ msgstr "Aplikace vypnuta" msgid "Gujarati" msgstr "gudžarátština" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP server" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro poskytuje různé SIP služby které může využít softwarový SIP telefon " +#~ "pro poskytování zvukových a videohovorů stejně jako oznamování " +#~ "přítomnosti a okamžité textové komunikace. repro poskytuje server a SIP " +#~ "uživatelské účty které klienti mohu použít pro oznámení své přítomnosti. " +#~ "Funguje také jako proxy pro federovanou SIP komunikaci s ostatními " +#~ "servery na Internetu podobně jako je tomu u e-mailu." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Pro uskutečnění SIP volání je třeba klientská aplikace. Ke klientům, " +#~ "kteří jsou k dispozici patří Jitsi " +#~ "(pro počítače) a CSipSimple (pro Android telefony)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Upozornění: Před použitím repro je třeba, aby pomocí webový nastavovací panel byli nastavení " +#~ "uživatelé a domény. Uživatelé ve skupiněadmin budou schopní se " +#~ "přihlásit do nastavovacího panelu repro. Po nastavení domény je třeba " +#~ "službu repro restartovat. Službu vypněte a znovu zapněte." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi je sada open-source projektů která umožňuje snadno vytvořit a " +#~ "nasadit řešení pro zabezpečenou videokonferenci. V srdci Jitsi jsou Jitsi " +#~ "Videobridge a Jitsi Meet, které umožňují mít konference na Internetu, " +#~ "zatímco ostatní projekty v komunitě dodávají další funkce, jako například " +#~ "zvuk, volání, záznam a souběžné vysílání po více médiích." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Úložiště Unhosted" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore je server pro nehostované " +#~ "webové aplikace. Myšlenkou je oddělit webové aplikace od dat. Nezávisle " +#~ "na tom, kde je webová aplikace poskytována, data mohou být ukládána na " +#~ "nehostovaném úložném serveru, který si uživatel vybere. Pomocí reStore, " +#~ "se váš {box_name} stane unhosted úložným serverem." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Účty je možné vytvářet a upravovat ve webovém " +#~ "rozhraní reStore." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -7161,9 +7667,6 @@ msgstr "gudžarátština" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Smazat zachycený stav č. %(number)s" -#~ msgid "Delete All" -#~ msgstr "Smazat vše" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Smazat zachycený stav č. %(number)s" @@ -7387,9 +7890,6 @@ msgstr "gudžarátština" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Zapnout přeposílání na BIND serveru" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Seznam IP adres, jednotlivé položky oddělujte mezerou" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Nastavení přeposílání sady aktualizováno" @@ -7478,9 +7978,6 @@ msgstr "gudžarátština" #~ msgid "Go to Apps" #~ msgstr "Přejít k aplikacím" -#~ msgid "Current Network Configuration" -#~ msgstr "Stávající nastavení sítě" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index be2616373..26c59e0c7 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1802,41 +1811,41 @@ msgstr "Slet bruger permanent?" msgid "Delete %(name)s" msgstr "Slet %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} slettet." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" @@ -1845,8 +1854,8 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "Documentation" msgstr "Dokumentation" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Brugermanual" @@ -2529,6 +2538,10 @@ msgstr "Generhverv" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Slet" @@ -2874,7 +2887,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adresse" @@ -3257,48 +3270,48 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Netværk" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruger DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Forbindelsestype" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Forbindelsesnavn" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fysisk Interface" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Netværksenheden som denne forbindelse skal bindes til." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Firewall-zone" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3306,21 +3319,21 @@ msgstr "" "Firewall-zonen bestemmer hvilke tjenester der er tilgængelige fra dette " "interface. Vælg Kun internt for netværk du har tillid til." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Ekstern" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3332,19 +3345,19 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Netmaske" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3352,21 +3365,21 @@ msgstr "" "Ikke obligatorisk. Hvis ikke angivet, vil en standardværdi for netmasken " "baseret på adressen anvendes." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Ikke obligatorisk." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3375,11 +3388,11 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Sekundær DNS-server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3388,13 +3401,13 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3410,31 +3423,31 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3447,7 +3460,7 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3460,77 +3473,77 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- vælg --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Netværkets synlige navn." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Tilstand" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Autentificeringstilstand" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3538,16 +3551,51 @@ msgstr "" "Vælg WPA hvis det trådløse netværk er sikret og kræver at klienter kender " "kodeordet for at oprette forbindelse." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 #, fuzzy #| msgid "OpenVPN" msgid "Open" msgstr "OpenVPN" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Nuværende Netværkskonfiguration" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netværksforbindelser" @@ -3599,14 +3647,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Kan ikke deaktivere forbindelse: Forbindelse ikke fundet." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-netværk i Nærheden" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Tilføj forbindelse" @@ -3643,22 +3692,30 @@ msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet." msgid "Delete Connection" msgstr "Slet Forbindelse" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor-konfiguration opdateres" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Rediger Forbindelse" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Rediger" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Deaktiver" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Aktiver" @@ -3769,7 +3826,7 @@ msgstr "DNS-server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Standard" @@ -3846,13 +3903,13 @@ msgstr "Afstand" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3870,29 +3927,113 @@ msgstr "Vis forbindelse %(name)s" msgid "Computer" msgstr "Computer" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Forbindelse" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Slet forbindelse %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktiv" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inaktiv" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Opdater" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Opret..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s Konfiguration" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "Næste" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "OpenVPN" @@ -3900,6 +4041,7 @@ msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" @@ -4569,118 +4711,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "DNS-server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro stiller forskellige SIP-servicer til rådighed som en SIP-softphone kan " -"bruge for at give adgang til lyd og video-opkald, såvel som tilgængelighed " -"og instant messaging. repro forsyner klienter med en server og SIP-" -"brugerkontoer som kan annoncere tilgængelighed. Den fungerer også som " -"bindeled for at fordele SIP-kommunikation til andre servere på internettet, " -"på samme måde som email." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"En klient-applikation er nødvendig for at foretage SIP-opkald. Mulige " -"klienter inkluderer Jitsi (til computere) " -"og CSipSimple (til Android-enheder)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Bemærk: Før brug af repo skal domæner og brugere " -"konfigureres ved hjælp af det web-baserede " -"konfigurationspanel. Brugere i admin-gruppen vil have adgang " -"til at logge ind i konfigurationspanelet. Efter at have opsat domænet, er " -"det nødvendigt at genstarte repo-servicen. Deaktiver servicen og genaktiver " -"den for at gøre dette." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -#, fuzzy -#| msgid "Unhosted Storage (reStore)" -msgid "Unhosted Storage" -msgstr "Ikke-hostet Lagerplads (reStore)" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore er en server til brug for ikke-hostede web-applilkationer som " -"anvender standarden kaldet unhosted.org. " -"Grundideen er at afkoble selve applikationen fra dens data. Ligegyldigt hvor " -"en web-applikation indlæses fra, kan data gemmes i et unhosted datalager " -"efter brugerens valg. Med reStore bliver din {box_name} dit unhosted " -"datalager." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Du kan oprette og redigere kontoer i reStores " -"webbrugerflade." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 #, fuzzy @@ -4793,7 +4823,7 @@ msgstr "Tilføj Service" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4809,7 +4839,7 @@ msgid "Used" msgstr "Brugt" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4826,7 +4856,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4854,13 +4884,13 @@ msgstr "Kite-navn" msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tilføj Service" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5659,47 +5689,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Ugyldigt værtsnavn" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Download-mappe" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Download-mappe" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Add Service" msgid "Share" msgstr "Tilføj Service" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6092,10 +6122,6 @@ msgstr "" "Transmission håndterer BitTorrent fildeling. Bemærk at BitTorrent ikke " "anonymiserer trafik." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Download-mappe" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -6456,11 +6482,376 @@ msgstr "Ændr kodeord" msgid "Password changed successfully." msgstr "Kodeord blev ændret." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Ugyldigt kite-name" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Distribuer Nøgle" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Nøgle distribueret til nøgleserver." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Webserver" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Opret Forbindelse" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "IRC Client (Quassel)" +msgid "As a Client" +msgstr "IRC-klient (Quassel)" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Tilføj forbindelse" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "Quassel IRC Client" +msgid "Add Client" +msgstr "Quassel IRC-klient" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "IRC Client (Quassel)" +msgid "Update Client" +msgstr "IRC-klient (Quassel)" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Opret Forbindelse" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Serverdomæne" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Server port" +msgid "Server public key:" +msgstr "Serverport" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Serverdomæne" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "This service already exists" +msgid "Client with public key already exists" +msgstr "Denne tjeneste eksisterer allerede" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client (Roundcube)" +msgid "Allowed Client" +msgstr "Emailklient (Roundcube)" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Opdater indstillinger" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client (Roundcube)" +msgid "Modify Client" +msgstr "Emailklient (Roundcube)" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "Slet" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "{name} deleted." +msgid "Client deleted." +msgstr "{name} slettet." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "packages not found" +msgid "Client not found" +msgstr "pakker ikke fundet" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Tilføjet brugerdefineret tjeneste" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Forbindelsestype" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Opdater indstillinger" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Rediger Forbindelse" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Slet Forbindelse" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} slettet." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6820,6 +7211,88 @@ msgstr "Applikation deaktiveret" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "DNS-server" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro stiller forskellige SIP-servicer til rådighed som en SIP-softphone " +#~ "kan bruge for at give adgang til lyd og video-opkald, såvel som " +#~ "tilgængelighed og instant messaging. repro forsyner klienter med en " +#~ "server og SIP-brugerkontoer som kan annoncere tilgængelighed. Den " +#~ "fungerer også som bindeled for at fordele SIP-kommunikation til andre " +#~ "servere på internettet, på samme måde som email." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "En klient-applikation er nødvendig for at foretage SIP-opkald. Mulige " +#~ "klienter inkluderer Jitsi (til " +#~ "computere) og CSipSimple (til Android-enheder)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Bemærk: Før brug af repo skal domæner og brugere " +#~ "konfigureres ved hjælp af det web-" +#~ "baserede konfigurationspanel. Brugere i admin-gruppen vil " +#~ "have adgang til at logge ind i konfigurationspanelet. Efter at have opsat " +#~ "domænet, er det nødvendigt at genstarte repo-servicen. Deaktiver servicen " +#~ "og genaktiver den for at gøre dette." + +#~ msgid "reStore" +#~ msgstr "reStore" + +#, fuzzy +#~| msgid "Unhosted Storage (reStore)" +#~ msgid "Unhosted Storage" +#~ msgstr "Ikke-hostet Lagerplads (reStore)" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore er en server til brug for ikke-hostede web-applilkationer som " +#~ "anvender standarden kaldet unhosted.org. Grundideen er at afkoble selve applikationen fra dens data. " +#~ "Ligegyldigt hvor en web-applikation indlæses fra, kan data gemmes i et " +#~ "unhosted datalager efter brugerens valg. Med reStore bliver din " +#~ "{box_name} dit unhosted datalager." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Du kan oprette og redigere kontoer i reStores " +#~ "webbrugerflade." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -7074,11 +7547,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Slet %(name)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "Slet" - #, fuzzy #~| msgid "Delete %(name)s" #~ msgid "Delete snapshot #%(number)s" @@ -7327,9 +7795,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "Gå til Apps" -#~ msgid "Current Network Configuration" -#~ msgstr "Nuværende Netværkskonfiguration" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7592,9 +8057,6 @@ msgstr "" #~ "Indtast venligst følgende grundoplysninger for at færdiggøre " #~ "konfigurationen." -#~ msgid "Next" -#~ msgstr "Næste" - #~ msgid "" #~ "Many FreedomBox contributors and users are also available on the " #~ "#freedombox channel of the irc.oftc.net IRC network." diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 64616af1f..95d13ce26 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: nautilusx \n" "Language-Team: German Gitanleitung an." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Lese- und Schreibberechtigung auf Git respositories" @@ -1776,33 +1785,33 @@ msgstr "Dieses respository permanent löschen?" msgid "Delete %(name)s" msgstr "%(name)s löschen" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Archiv erstellt." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Beim Erstellen des Repository ist ein Fehler aufgetreten." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Archiv bearbeitet." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} gelöscht." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" @@ -1811,8 +1820,8 @@ msgstr "{name} konnte nicht gelöscht werden: {error}" msgid "Documentation" msgstr "Dokumentation" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handbuch" @@ -2497,6 +2506,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Löschen" @@ -2867,7 +2880,7 @@ msgstr "" "erleiden." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adresse" @@ -3256,11 +3269,11 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle Webanwendungen" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Netzwerke" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3269,7 +3282,7 @@ msgstr "" "eine Verbindung zum Internet her. Teilen Sie diese Verbindung mit anderen " "Geräten im Netzwerk." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3277,32 +3290,32 @@ msgstr "" "Geräte die mit anderen Methoden verwaltet werden, können hier möglicherweise " "nicht konfiguriert werden." -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC wird auf IPv{kind} verwendet" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Verbindungstyp" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Verbindungsname" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Physische Schnittstelle" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Das Netzwerkgerät, an das diese Verbindung gebunden sein sollte." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Firewall-Zone" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3310,21 +3323,21 @@ msgstr "" "Die Firewall-Zone entscheidet, welche Dienste über diese Schnittstellen zur " "Verfügung stehen. Wählen Sie „Intern“ nur für vertrauenswürdige Netzwerke." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4-Adressierungsmethode" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3336,19 +3349,19 @@ msgstr "" "{box_name} wie einen Router arbeiten, die Clients dieses Netzwerks " "konfigurieren und die Internetverbindung teilen." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Geteilt" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Netzmaske" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3356,21 +3369,21 @@ msgstr "" "Optionaler Wert. Bleibt dieser leer, wird eine Maske basierend auf der " "Adresse verwendet." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Optionaler Wert." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3379,11 +3392,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Zweiter DNS-Server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3392,11 +3405,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6-Adressierungsmethode" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3405,27 +3418,27 @@ msgstr "" "Die Methode „Automatisch“ lässt {box_name} die Konfiguration von diesem " "Netzwerk holen und macht es zu einem Client." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatisch, nur DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignorieren" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Präfix" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Wert zwischen 1 und 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3434,7 +3447,7 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3443,54 +3456,54 @@ msgstr "" "„Automatisch“ ist, werden die DNS Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- auswählen --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Der sichtbare Name des Netzwerks." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Zugangspunkt" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frequenzband" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3498,11 +3511,11 @@ msgstr "" "Optionaler Wert. Beschränkung auf den WLAN-Kanal in dem ausgewählten " "Frequenzband. Leer oder 0 bedeutet automatische Auswahl." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3512,11 +3525,11 @@ msgstr "" "einem Zugangspunkt ist nur zugelassen, wenn die BSSID des Zugangspunkts mit " "diesem Wert übereinstimmt. Beispiel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Authentifizierungsmodus" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3524,14 +3537,49 @@ msgstr "" "Wählen Sie WPA, wenn das WLAN-Netzwerk gesichert ist und ein Passwort für " "die Benutzung erfordert." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Offen" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Aktuelle Netzwerk-Konfiguration" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netzwerkverbindungen" @@ -3584,14 +3632,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Konnte Verbindung nicht ausschalten: Verbindung nicht gefunden." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "WLANs in der Nähe" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Verbindung hinzufügen" @@ -3626,22 +3675,30 @@ msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden." msgid "Delete Connection" msgstr "Verbindung löschen" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor-Konfiguration wird aktualisiert" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Verbindung bearbeiten" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Bearbeiten" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Ausschalten" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Einschalten" @@ -3752,7 +3809,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Standard" @@ -3830,13 +3887,13 @@ msgstr "Abstand" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "WLAN" @@ -3854,32 +3911,117 @@ msgstr "Verbindung %(name)s anzeigen" msgid "Computer" msgstr "Computer" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Verbindungen" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Verbindung %(name)s löschen" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktiv" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inaktiv" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Aktualisieren" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Anlegen …" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s ist auf dem neuesten Stand." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "Weiter" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtuelles Privates Netzwerk" @@ -4534,112 +4676,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration der Zugangsrechte aktualisiert" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP-Server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro bietet verschiedene SIP-Dienste an, die ein SIP-Softphone verwenden " -"kann, um Audio- und Videoanrufe sowie Präsenz und Sofortnachrichten zur " -"Verfügung zu stellen. repro stellt einen Server und SIP-Benutzerkonten " -"bereit, die Kunden nutzen können, um ihre Präsenz bekannt zu machen. Es " -"fungiert auch als Proxy, um SIP-Kommunikation, ähnlich wie E-Mail, zu " -"anderen Servern im Internet zu bündeln." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Um SIP-Anrufe zu tätigen, wird eine Client-Anwendung benötigt. Verfügbare " -"Clients sind unter anderem Jitsi (für " -"Computer) und CSipSimple (für Android-Telefone)." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Hinweis: Vor der Verwendung von repro, müssen Domains und " -"Benutzer über das web-basierte Konfigurationspanel konfiguriert werden. Die Benutzer " -"der Gruppe admin können sich dort anmelden. Nach dem Festlegen der " -"Domain, ist es erforderlich, den repro Dienst neu zu starten. Deaktivieren " -"Sie den Dienst und aktivieren ihn wieder." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi ist eine Sammlung von quelloffenen Projekten, die es Ihnen einfach " -"machen, eigene, sichere Videokonferenzlösungen zu betreiben. Die Herzstücke " -"von Jitsi sind Jitsi Videobridge und Jitsi Meet, die es erlauben eine " -"Konferenz über das Internet zu führen. Andere Projekte in der Gemeinschaft " -"stellen weitere Funktionen zur Verfügung, beispielsweise Audio, Einwahl, " -"Aufzeichnen und Simulcast." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Unhosted Speicher" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore ist ein Server für unhosted Web-" -"Anwendungen. Die Idee ist, Web-Anwendungen von den Daten zu entkoppeln. " -"Unabhängig davon, wo eine Web-Anwendung die unhosted unterstützt " -"bereitgestellt wird, können Ihre Daten auf einem unhosted Dienst Ihrer Wahl " -"gespeichert werden. Mit reStore wird Ihre {box_name} Ihr unhosted-" -"Speicherdienst." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Sie können Benutzerkonten in der reStore-Weboberfläche anlegen und bearbeiten." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4750,8 +4786,12 @@ msgid "Shares" msgstr "Freigabenamen" #: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directories will be shared on selected " +#| "disks, not the whole disk." msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" "Hinweis: Nur speziell erstellte Verzeichnisse werden auf ausgewählten " @@ -4767,7 +4807,9 @@ msgid "Used" msgstr "Genutzt" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "VFAT Partitionen werden nicht unterstützt" #: plinth/modules/samba/templates/samba.html:103 @@ -4786,8 +4828,12 @@ msgid "Users who can currently access group and home shares" msgstr "Benutzer, die derzeit auf Gruppen- und Home-Freigaben zugreifen können" #: plinth/modules/samba/templates/samba.html:113 +#, fuzzy +#| msgid "" +#| "Users who need to re-enter their password on the password change page to " +#| "access group and home shares" msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" "Benutzer, die ihr Kennwort auf der Seite Kennwortänderung erneut eingeben " @@ -4814,11 +4860,11 @@ msgstr "Freigabename" msgid "Action" msgstr "Aktion" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "Open Share" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "Group Share" @@ -5603,39 +5649,39 @@ msgstr "Die gewünschte Option ist nicht gestattet." msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "Ungültiger Verzeichnisname." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "Verzeichnis ist nicht vorhanden." -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "Pfad ist kein Verzeichnis." -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "Verzeichnis ist für den Benutzer nicht lesbar." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "Das Verzeichnis ist für den Benutzer nicht beschreibbar." -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "Verzeichnis" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "Unterverzeichnis (optional)" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "Freigeben" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "Anderes Verzeichnis (unten angeben)" @@ -6046,10 +6092,6 @@ msgstr "" "Transmission-Daemon verarbeitet BitTorrent-Dateien. Es gilt zu beachten: " "BitTorrent ist nicht anonym!" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Download-Ordner" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6400,11 +6442,392 @@ msgstr "Passwort ändern" msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Ungültiger kite-Name" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Schlüssel veröffentlichen" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Veröffentlichte Schlüssel auf dem Server." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Eine Liste von IP-Adressen, getrennt durch Leerzeichen" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Chatserver" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Verbindung anlegen" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Derzeit sind keine Freigaben konfiguriert." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Neuen Vermittler hinzufügen" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Chatclient" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Authentifizierung am Server fehlgeschlagen." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Neuen Vermittler hinzufügen" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Verbindung hinzufügen" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC-Client" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Sind Sie sicher, dass Sie dieses Archiv löschen wollen?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Sind Sie sicher, dass Sie dieses Archiv löschen wollen?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Chatclient" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Verbindung anlegen" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Serverdomain" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Wähle verifizierten öffentlichen SSH-Schlüssel" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Serverdomain" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Neuen Vermittler hinzufügen" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Eine Freigabe mit diesem Namen existiert bereits." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-Mail-Client" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Update-Einstellungen" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-Mail-Client" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Alle löschen" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archiv gelöscht." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Archiv nicht gefunden" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Spezieller Dienst hinzugefügt" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Verbindungstyp" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Update-Einstellungen" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Verbindung bearbeiten" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Verbindung löschen" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Freigabe gelöscht." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Allgemein" @@ -6757,6 +7180,99 @@ msgstr "Anwendung deaktiviert" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP-Server" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro bietet verschiedene SIP-Dienste an, die ein SIP-Softphone verwenden " +#~ "kann, um Audio- und Videoanrufe sowie Präsenz und Sofortnachrichten zur " +#~ "Verfügung zu stellen. repro stellt einen Server und SIP-Benutzerkonten " +#~ "bereit, die Kunden nutzen können, um ihre Präsenz bekannt zu machen. Es " +#~ "fungiert auch als Proxy, um SIP-Kommunikation, ähnlich wie E-Mail, zu " +#~ "anderen Servern im Internet zu bündeln." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Um SIP-Anrufe zu tätigen, wird eine Client-Anwendung benötigt. Verfügbare " +#~ "Clients sind unter anderem Jitsi (für " +#~ "Computer) und CSipSimple (für Android-Telefone)." + +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Hinweis: Vor der Verwendung von repro, müssen Domains " +#~ "und Benutzer über das web-basierte Konfigurationspanel konfiguriert werden. Die " +#~ "Benutzer der Gruppe admin können sich dort anmelden. Nach dem " +#~ "Festlegen der Domain, ist es erforderlich, den repro Dienst neu zu " +#~ "starten. Deaktivieren Sie den Dienst und aktivieren ihn wieder." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi ist eine Sammlung von quelloffenen Projekten, die es Ihnen einfach " +#~ "machen, eigene, sichere Videokonferenzlösungen zu betreiben. Die " +#~ "Herzstücke von Jitsi sind Jitsi Videobridge und Jitsi Meet, die es " +#~ "erlauben eine Konferenz über das Internet zu führen. Andere Projekte in " +#~ "der Gemeinschaft stellen weitere Funktionen zur Verfügung, beispielsweise " +#~ "Audio, Einwahl, Aufzeichnen und Simulcast." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Unhosted Speicher" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore ist ein Server für unhosted " +#~ "Web-Anwendungen. Die Idee ist, Web-Anwendungen von den Daten zu " +#~ "entkoppeln. Unabhängig davon, wo eine Web-Anwendung die unhosted " +#~ "unterstützt bereitgestellt wird, können Ihre Daten auf einem unhosted " +#~ "Dienst Ihrer Wahl gespeichert werden. Mit reStore wird Ihre {box_name} " +#~ "Ihr unhosted-Speicherdienst." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Sie können Benutzerkonten in der reStore-" +#~ "Weboberfläche anlegen und bearbeiten." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -7174,9 +7690,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Lösche Speicherauszug #%(number)s" -#~ msgid "Delete All" -#~ msgstr "Alle löschen" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Lösche Speicherauszug #%(number)s" @@ -7394,9 +7907,6 @@ msgstr "Gujarati" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Aktivieren Sie die Weiterleitung auf Ihrem BIND-Server" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Eine Liste von IP-Adressen, getrennt durch Leerzeichen" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Forwarding Konfiguration aktualisiert" @@ -7525,9 +8035,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Zu den Anwendungen" -#~ msgid "Current Network Configuration" -#~ msgstr "Aktuelle Netzwerk-Konfiguration" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7803,9 +8310,6 @@ msgstr "Gujarati" #~ "Bitte geben Sie die folgenden grundlegenden Informationen an um die " #~ "Installation abzuschließen." -#~ msgid "Next" -#~ msgstr "Weiter" - #~ msgid "" #~ "Many FreedomBox contributors and users are also available on the " #~ "#freedombox channel of the irc.oftc.net IRC network." diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index 6b5796121..d0de90347 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -196,7 +196,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -341,7 +341,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -367,6 +367,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -587,8 +588,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -879,6 +881,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1107,16 +1113,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1203,7 +1209,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1366,7 +1375,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1458,7 +1467,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1552,33 +1561,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1587,8 +1596,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2152,6 +2161,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2446,7 +2459,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2781,68 +2794,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2850,179 +2863,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3073,14 +3119,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3115,22 +3162,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3241,7 +3294,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3307,13 +3360,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3331,32 +3384,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3897,82 +4032,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4056,7 +4115,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4070,7 +4129,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4087,7 +4146,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4109,11 +4168,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4806,39 +4865,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5180,10 +5239,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5496,11 +5551,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 5713cf3b7..137ca088b 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Nektarios Katakis \n" "Language-Team: Greek μάθημα git." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Πρόσβαση ανάγνωσης και εγγραφής σε αποθετήρια Git" @@ -1797,33 +1806,33 @@ msgstr "Να διαγραφεί μόνιμα αυτό το αποθετήριο; msgid "Delete %(name)s" msgstr "Διαγραφή %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Το αποθετήριο δημιουργήθηκε." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Παρουσιάστηκε σφάλμα κατά τη δημιουργία του αποθετηρίου." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "To αποθετήριο τροποποιήθηκε." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Τροποποίηση αποθετηρίου" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "το {name} διαγράφηκε." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" @@ -1832,8 +1841,8 @@ msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" msgid "Documentation" msgstr "Boηθητικά έγγραφα" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Εγχειρίδιο" @@ -2528,6 +2537,10 @@ msgstr "Ανάκτηση" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Διαγραφή" @@ -2906,7 +2919,7 @@ msgstr "" "ζημιές οποιουδήποτε είδους." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Διεύθυνση" @@ -3299,11 +3312,11 @@ msgstr "Όλα" msgid "All web apps" msgstr "Όλες οι εφαρμογές ιστού" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Δίκτυα" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3312,7 +3325,7 @@ msgstr "" "Ethernet, Wi-Fi ή PPPoE. Μοιραστείτε αυτήν τη σύνδεση με άλλες συσκευές στο " "δίκτυο." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3320,32 +3333,32 @@ msgstr "" "Οι συσκευές που διαχειρίζονται μέσω άλλων μεθόδων ενδέχεται να μην είναι " "διαθέσιμες για ρύθμιση παραμέτρων εδώ." -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Χρήση του DNSSEC σε IPv {kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Τύπος σύνδεσης" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Όνομα σύνδεσης" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Φυσικό Interface" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Η συσκευή δικτύου που η σύνδεση αυτή θα πρέπει να δεσμεύεται." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Ζώνη τείχους προστασίας" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3353,21 +3366,21 @@ msgstr "" "Η ζώνη τείχους προστασίας θα ελέγχει ποιες υπηρεσίες είναι διαθέσιμες σε " "αυτές τις διασυνδέσεις. Επιλέξτε εσωτερική μόνο για αξιόπιστα δίκτυα." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Εξωτερική" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Εσωτερική" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Μέθοδος διευθύνσεων IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3380,19 +3393,19 @@ msgstr "" "ρυθμίζει τις παραμέτρους των υπολογιστών-πελατών σε αυτό το δίκτυο και να " "μοιράζεται τη σύνδεσή του στο Internet." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Αυτόματο (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Κοινόχρηστο" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Μάσκα δικτύου" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3400,21 +3413,21 @@ msgstr "" "Προαιρετική τιμή. Εάν μείνει κενό, θα χρησιμοποιηθεί μια προεπιλεγμένη μάσκα " "δικτύου με βάση τη διεύθυνση." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Πύλη" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Προαιρετική τιμή." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "Διακομιστής DNS" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3423,11 +3436,11 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Δεύτερος διακομιστής DNS" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3436,11 +3449,11 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Μέθοδος διευθύνσεων IPv6" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3449,27 +3462,27 @@ msgstr "" "Η \"Αυτόματη\" μέθοδος θα κάνει το {box_name} να αποκτήσει ρύθμιση " "παραμέτρων από αυτό το δίκτυο καθιστώντας το πρόγραμμα-πελάτη." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Αυτόματο" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Αυτόματη, μόνο DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Αγνόησε" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Πρόθεμα" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Τιμή μεταξύ 1 και 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3478,7 +3491,7 @@ msgstr "" "διευθύνσεων IPv6 είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από " "ένα διακομιστή DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3487,54 +3500,54 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "--Επιλέξτε--" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "Ssid" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Το ορατό όνομα του δικτύου." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Λειτουργία" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Υποδομή" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Σημείο πρόσβασης" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Ζώνη συχνοτήτων" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "Α (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Κανάλι" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3542,11 +3555,11 @@ msgstr "" "Προαιρετική τιμή. Ασύρματο κανάλι για περιορισμό στην επιλεγμένη ζώνη " "συχνοτήτων. Η κενή ή η τιμή 0 σημαίνει αυτόματη επιλογή." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "Bssid" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3556,11 +3569,11 @@ msgstr "" "συνδέεστε σε ένα σημείο πρόσβασης, συνδεθείτε μόνο εάν το BSSID του σημείου " "πρόσβασης ταιριάζει με αυτό που παρέχεται. Παράδειγμα: 00:11:22: AA: BB: CC." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Λειτουργία ελέγχου ταυτότητας" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3568,14 +3581,49 @@ msgstr "" "Επιλέξτε WPA εάν το ασύρματο δίκτυο είναι ασφαλισμένο και απαιτεί από τους " "υπολογιστές-πελάτες να έχουν τον κωδικό πρόσβασης για να συνδεθούν." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "Wpa" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Ανοιχτό" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Preferred router configuration" +msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Συνδέσεις δικτύου" @@ -3628,14 +3676,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Απέτυχε η απενεργοποίηση της σύνδεσης: η σύνδεση δεν βρέθηκε." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Κοντινά δίκτυα Wi-Fi" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Προσθήκη σύνδεσης" @@ -3670,22 +3719,30 @@ msgstr "Απέτυχε η διαγραφή της σύνδεσης: η σύνδ msgid "Delete Connection" msgstr "Διαγραφή σύνδεσης" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Οι ρυθμίσεις Tor ενημερώνονται" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Επεξεργασία σύνδεσης" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Επεξεργασία" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Απενεργοποίηση" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Ενεργοποίηση" @@ -3796,7 +3853,7 @@ msgstr "Διακομιστής DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Προεπιλεγμένο" @@ -3874,13 +3931,13 @@ msgstr "Διαχωρισμός" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3898,32 +3955,117 @@ msgstr "Εμφάνιση σύνδεσης %(name)s" msgid "Computer" msgstr "Υπολογιστής" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Συνδέσεις" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Διαγραφή της σύνδεσης %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Ενεργό" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Ανενεργό" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Ενημερωμένη έκδοση" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Δημιουργήστε..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "To %(box_name)s είναι ενημερωμένο." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Εικονικό ιδιωτικό δίκτυο" @@ -4589,115 +4731,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Η διαμόρφωση των δικαιωμάτων πρόσβασης ενημερώθηκε" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "Διακομιστής SIP" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"To repro παρέχει διάφορες υπηρεσίες SIP που ένα τηλέφωνο SIP μπορεί να " -"χρησιμοποιήσει για vα παρέχει κλήσεις ήχου και βίντεο, καθώς και γραπτά " -"μηνύματα. Το repro είναι ένας διακομιστής και παρέχει τους λογαριασμούς " -"χρηστών που μπορούν να χρησιμοποιήσουν οι πελάτες για να κάνουν γνωστή την " -"παρουσία. Λειτουργεί επίσης ως διακομιστής μεσολάβησης για την ομοσπονδιακή " -"επικοινωνία SIP σε άλλους διακομιστές στο διαδίκτυο παρόμοια με το " -"ηλεκτρονικό ταχυδρομείο." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Για να κάνετε κλήσεις SIP, απαιτείται να έχετε ένα πρόγραμμα-πελάτης. Τα " -"διαθέσιμα προγράμματα-πελάτες περιλαμβάνουν Jitsi (για υπολογιστές) και CSipSimple για τηλέφωνα Android." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Σημείωση: Πριν από τη χρήση του repro, όνομα διαδικτύου και " -"χρήστες θα πρέπει να ρυθμιστούν χρησιμοποιώντας το πίνακα ρυθμίσεων. Οι χρήστες στην ομάδα " -"διαχειριστών( admin) θα είναι σε θέση να συνδεθούν στον πίνακα " -"ρυθμίσεων του repro. Μετά τη ρύθμιση του ονόματος διαδικτύου, είναι " -"απαραίτητο να κάνετε επανεκκίνηση της υπηρεσίας του repro. Απενεργοποιήστε " -"την υπηρεσία και ενεργοποιήσετέ την εκ νέου." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi είναι ένα σύνολο από έργα ανοικτού πηγαίου κώδικα που σας επιτρέπει " -"εύκολα να δημιουργήσετε και να αναπτύξετε ασφαλείς λύσεις τηλεδιάσκεψης. " -"Στην καρδιά του Jitsi είναι το Jitsi Videobridge και Jitsi Meet, που σας " -"επιτρέπουν να έχετε συνέδρια στο διαδίκτυο, ενώ άλλα έργα της κοινότητας " -"προσφέρουν άλλα χαρακτηριστικά, όπως ήχο, dial-in, καταγραφή κλήσεων, και " -"ταυτόχρονης μετάδοσης." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Μη φιλοξενούμενος χώρος αποθήκευσης" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"Το reStore είναι ένας διακομιστής για τις μη " -"φιλοξενούμενες εφαρμογές διαδικτύου (χωρίς κεντρικό διακομιστή). Η ιδέα " -"είναι να χωρίσουμε τις εφαρμογές διαδικτύου από τα δεδομένα. Δεν έχει " -"σημασία, από πού μια εφαρμογή διαδικτύου προέρχεται τα δεδομένα μπορούν να " -"αποθηκευτούν σε ένα μη φιλοξενούμενο διακομιστή αποθήκευσης της επιλογής του " -"χρήστη. Με το reStore, το {box_name} γίνεται μη φιλοξενούμενος διακομιστής " -"αποθήκευσης." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Μπορείτε να δημιουργήσετε και να επεξεργαστείτε τους λογαριασμούς χρηστών " -"στο διαδικτυακό περιβάλλον του Restore." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4813,8 +4846,12 @@ msgid "Shares" msgstr "Μερίσματα" #: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directories will be shared on selected " +#| "disks, not the whole disk." msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" "Σημείωση: μόνο οι ειδικά δημιουργημένοι κατάλογοι θα κοινοποιηθούν σε " @@ -4830,7 +4867,9 @@ msgid "Used" msgstr "Χρησιμοποιείται" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "τα διαμερίσματα VFAT δεν υποστηρίζονται" #: plinth/modules/samba/templates/samba.html:103 @@ -4851,8 +4890,12 @@ msgstr "" "Χρήστες που έχουν αυτήν τη στιγμή πρόσβαση σε ομαδικά και οικιακά μερίσματα" #: plinth/modules/samba/templates/samba.html:113 +#, fuzzy +#| msgid "" +#| "Users who need to re-enter their password on the password change page to " +#| "access group and home shares" msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" "Χρήστες που χρειάζεται να ξανα-εισάγουν τον κωδικό τους στη σελίδα αλλαγής " @@ -4878,11 +4921,11 @@ msgstr "Όνομα μερίσματος" msgid "Action" msgstr "Ενέργεια" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "Aνοικτό μέρισμα" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "Ομαδικό μέρισμα" @@ -5675,39 +5718,39 @@ msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλε msgid "The device is mounted by another user." msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "Το όνομα καταλόγου δεν είναι έγκυρο." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "Ο κατάλογος δεν υπάρχει." -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "Το μονοπάτι δεν είναι κατάλογος." -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "Ο κατάλογος δεν είναι αναγνώσιμος από τον χρήστη." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "Ο κατάλογος δεν είναι εγγράψιμος από το χρήστη." -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "Κατάλογος" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "Υποκατάλογος (προαιρετικό)" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "Μέρισμα" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "Άλλος κατάλογος (Καθορίστε παρακάτω)" @@ -5824,8 +5867,8 @@ msgstr "" "{box_name} εκτελεί μια μεμονωμένη παρουσία του Syncthing που μπορεί να " "χρησιμοποιηθεί από πολλούς χρήστες. Το σύνολο συσκευών κάθε χρήστη μπορεί " "να συγχρονιστεί με ένα ξεχωριστό σύνολο φακέλων. Η σελίδα ιστού στο " -"{box_name} είναι διαθέσιμη μόνο για χρήστες που ανήκουν στην ομάδα \"admin\" " -"(διαχειριστών)." +"{box_name} είναι διαθέσιμη μόνο για χρήστες που ανήκουν στην ομάδα \"admin" +"\" (διαχειριστών)." #: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" @@ -5874,8 +5917,8 @@ msgstr "" "Το Tahoe-LAFS όνομα διαδικτύου έχει οριστεί σε %(domain_name)s. " "Αλλαγή του ονόματος διαδικτύου του FreedomBox χρειάζεται επανεγκατάσταση του " "Tahoe-LAFS και ΘΑ ΧΑΣΕΤΕ ΔΕΔΟΜΕΝΑ ΣΑΣ. Μπορείτε να αποκτήσετε πρόσβαση στο " -"Tahoe-LAFS στη διεύθυνση URL https://%(domain_name)s:5678." +"Tahoe-LAFS στη διεύθυνση URL https://%(domain_name)s:5678." #: plinth/modules/tahoe/templates/tahoe-post-setup.html:55 msgid "Local introducer" @@ -5991,10 +6034,10 @@ msgid "" "\">https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -"Μπορείτε να βρείτε μερικές γέφυρες στη διεύθυνση https://bridges.torproject.org/ και " -"να αντιγράψετε τις πληροφορίες της γέφυρας εδώ. Οι τρέχουσες υποστηριζόμενες " -"μεταφορές είναι 'καμία', obfs3, obfs4 και scamblesuit." +"Μπορείτε να βρείτε μερικές γέφυρες στη διεύθυνση https://bridges.torproject.org/ και να αντιγράψετε " +"τις πληροφορίες της γέφυρας εδώ. Οι τρέχουσες υποστηριζόμενες μεταφορές " +"είναι 'καμία', obfs3, obfs4 και scamblesuit." #: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" @@ -6118,10 +6161,6 @@ msgstr "" "πρόγραμμα Transmission χειρίζεται την κοινή χρήση αρχείων bitorrent. " "Σημειώστε ότι το BitTorrent δεν είναι ανώνυμο." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Κατάλογος λήψεων" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6475,11 +6514,388 @@ msgstr "Αλλαγή κωδικού πρόσβασης" msgid "Password changed successfully." msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Μη έγκυρο όνομα kite" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Δημοσίευση κλειδιού" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Δημοσιεύθηκε το κλειδί στο διακομιστή κλειδιών." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Διακομιστής συνομιλίας" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Δημιουργία σύνδεσης" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Δεν έχουν ρυθμιστεί μερίσματα." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Προσθέστε νέο εισαγωγέα" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Πρόγραμμα-πελάτης συνομιλίας" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Ο έλεγχος ταυτότητας στον απομακρυσμένο διακομιστή απέτυχε." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Προσθέστε νέο εισαγωγέα" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Προσθήκη σύνδεσης" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "Πελάτης IRC" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το αποθετήριο;" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το αποθετήριο;" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Πρόγραμμα-πελάτης συνομιλίας" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Δημιουργία σύνδεσης" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Όνομα διαδικτύου διακομιστή" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Επιλογή εξακριβωμένου δημόσιου κλειδιού SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Όνομα διαδικτύου διακομιστή" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Προσθέστε νέο εισαγωγέα" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Υπάρχει ήδη ένα μέρισμα με αυτό το όνομα." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Ενημέρωση ρυθμίσεων" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Το αρχείο διαγράφηκε." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Το αποθετήριο δεν βρέθηκε" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Προστέθηκε τροποποιημένη υπηρεσία" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Τύπος σύνδεσης" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Ενημέρωση ρυθμίσεων" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Επεξεργασία σύνδεσης" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Διαγραφή σύνδεσης" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Το μέρισμα διαγράφηκε." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Γενικός" @@ -6531,8 +6947,8 @@ msgid "" msgstr "" "Αν πιστεύετε ότι αυτή η σελίδα που λείπει θα πρέπει να υπάρχει, παρακαλούμε " "να υποβάλετε ένα σφάλμα στo πρόγραμμα Plinth του πρότζεκτ Freedombox issue " -"tracker." +"= \"https://salsa.debian.org/freedombox-team/plinth/issues\">issue tracker." #: plinth/templates/500.html:25 msgid "500" @@ -6549,8 +6965,8 @@ msgstr "" "Αυτό είναι ένα εσωτερικό σφάλμα και όχι κάτι που προκαλέσατε ή μπορείτε να " "διορθώσετε. Αναφέρετε το σφάλμα στο κατάλογος σφαλμάτων ώστε να μπορούμε να " -"το διορθώσουμε. Επίσης, Παρακαλούμε επισυνάψτε το αρχείο καταγραφής κατάστασης στην αναφορά " +"το διορθώσουμε. Επίσης, Παρακαλούμε επισυνάψτε το αρχείο καταγραφής κατάστασης στην αναφορά " "σφάλματος." #: plinth/templates/app.html:47 @@ -6789,7 +7205,8 @@ msgstr "" #: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." -msgstr "Αυτή η εφαρμογή δεν είναι αυτή τη στιγμή διαθέσιμη στο λειτουργικό σας." +msgstr "" +"Αυτή η εφαρμογή δεν είναι αυτή τη στιγμή διαθέσιμη στο λειτουργικό σας." #: plinth/templates/setup.html:87 msgid "Install" @@ -6832,3 +7249,100 @@ msgstr "Η εφαρμογή απενεργοποιήθηκε" #: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" + +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "Διακομιστής SIP" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "To repro παρέχει διάφορες υπηρεσίες SIP που ένα τηλέφωνο SIP μπορεί να " +#~ "χρησιμοποιήσει για vα παρέχει κλήσεις ήχου και βίντεο, καθώς και γραπτά " +#~ "μηνύματα. Το repro είναι ένας διακομιστής και παρέχει τους λογαριασμούς " +#~ "χρηστών που μπορούν να χρησιμοποιήσουν οι πελάτες για να κάνουν γνωστή " +#~ "την παρουσία. Λειτουργεί επίσης ως διακομιστής μεσολάβησης για την " +#~ "ομοσπονδιακή επικοινωνία SIP σε άλλους διακομιστές στο διαδίκτυο παρόμοια " +#~ "με το ηλεκτρονικό ταχυδρομείο." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Για να κάνετε κλήσεις SIP, απαιτείται να έχετε ένα πρόγραμμα-πελάτης. Τα " +#~ "διαθέσιμα προγράμματα-πελάτες περιλαμβάνουν Jitsi (για υπολογιστές) και CSipSimple για τηλέφωνα " +#~ "Android." + +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Σημείωση: Πριν από τη χρήση του repro, όνομα διαδικτύου " +#~ "και χρήστες θα πρέπει να ρυθμιστούν χρησιμοποιώντας το πίνακα ρυθμίσεων. Οι χρήστες " +#~ "στην ομάδα διαχειριστών( admin) θα είναι σε θέση να συνδεθούν " +#~ "στον πίνακα ρυθμίσεων του repro. Μετά τη ρύθμιση του ονόματος διαδικτύου, " +#~ "είναι απαραίτητο να κάνετε επανεκκίνηση της υπηρεσίας του repro. " +#~ "Απενεργοποιήστε την υπηρεσία και ενεργοποιήσετέ την εκ νέου." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi είναι ένα σύνολο από έργα ανοικτού πηγαίου κώδικα που σας επιτρέπει " +#~ "εύκολα να δημιουργήσετε και να αναπτύξετε ασφαλείς λύσεις τηλεδιάσκεψης. " +#~ "Στην καρδιά του Jitsi είναι το Jitsi Videobridge και Jitsi Meet, που σας " +#~ "επιτρέπουν να έχετε συνέδρια στο διαδίκτυο, ενώ άλλα έργα της κοινότητας " +#~ "προσφέρουν άλλα χαρακτηριστικά, όπως ήχο, dial-in, καταγραφή κλήσεων, και " +#~ "ταυτόχρονης μετάδοσης." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Μη φιλοξενούμενος χώρος αποθήκευσης" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "Το reStore είναι ένας διακομιστής για τις μη φιλοξενούμενες εφαρμογές διαδικτύου (χωρίς κεντρικό " +#~ "διακομιστή). Η ιδέα είναι να χωρίσουμε τις εφαρμογές διαδικτύου από τα " +#~ "δεδομένα. Δεν έχει σημασία, από πού μια εφαρμογή διαδικτύου προέρχεται τα " +#~ "δεδομένα μπορούν να αποθηκευτούν σε ένα μη φιλοξενούμενο διακομιστή " +#~ "αποθήκευσης της επιλογής του χρήστη. Με το reStore, το {box_name} γίνεται " +#~ "μη φιλοξενούμενος διακομιστής αποθήκευσης." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Μπορείτε να δημιουργήσετε και να επεξεργαστείτε τους λογαριασμούς χρηστών " +#~ "στο διαδικτυακό περιβάλλον του Restore." diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index b6478e36b..0ee57bcb7 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Spanish tutorial de Git." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" @@ -1761,33 +1770,33 @@ msgstr "¿Eliminar este repositorio definitivamente?" msgid "Delete %(name)s" msgstr "Eliminar %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Repositorio creado." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Ha habido un error al crear el repositorio." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Repositorio editado." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} eliminado." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" @@ -1796,8 +1805,8 @@ msgstr "No se pudo eliminar {name}: {error}" msgid "Documentation" msgstr "Documentación" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -2477,6 +2486,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Eliminar" @@ -2847,7 +2860,7 @@ msgstr "" "ningún tipo." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Dirección" @@ -3223,11 +3236,11 @@ msgstr "Todos" msgid "All web apps" msgstr "Todas las apps web" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Redes" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3235,7 +3248,7 @@ msgstr "" "Configurar dispositivos de red. Conectar con Internet mediante Ethernet, Wi-" "Fi o PPPoE. Compartir esa conexión con otros dispositivos de la red." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3243,32 +3256,32 @@ msgstr "" "Los dispositivos administrados mediante otros métodos quizá no estén " "disponibles para configurarse aquí." -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC en uso sobre IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Tipo de conexión" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Nombre de conexión" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Interfaz física" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Dispositivo de red al que se debería unir esta conexión." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3276,21 +3289,21 @@ msgstr "" "La zona del firewall controlará qué servicios están disponibles en estas " "interfaces. Seleccione Interna solo para redes de confianza." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Direccionamiento IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3302,19 +3315,19 @@ msgstr "" "{box_name} se comporte como un router, configure los clientes de esta red y " "comparta su conexión a Internet." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automático (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Compartido" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Máscara de red" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3322,21 +3335,21 @@ msgstr "" "Valor opcional. Si no se especifica, se usará una máscara de red por defecto " "basada en la dirección asignada." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Puerta de enlace" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Valor opcional." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "Servidor DNS" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3344,11 +3357,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Servidor DNS secundario" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3356,11 +3369,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Direccionamiento IPv6" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3369,27 +3382,27 @@ msgstr "" "Los métodos \"automáticos\" harán que {box_name} solicite su configuración a " "la red y actúe como cualquier otro cliente." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automática" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automático, solo DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignorar" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Prefijo" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Valor entre 1 y 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3397,7 +3410,7 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3405,54 +3418,54 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- seleccionar --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Nombre visible de la red." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modo" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infraestructura" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Punto de acceso" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Banda de frecuencia" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3460,11 +3473,11 @@ msgstr "" "Valor opcional. Canal inalámbrico para restringir en la frecuencia " "seleccionada. Valor 0 o en blanco implica selección automática." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3474,11 +3487,11 @@ msgstr "" "a un punto de acceso si su BSSID coincide con el facilitado. Ejemplo: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Modo de autenticación" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3486,14 +3499,49 @@ msgstr "" "Seleccione WPA si la red inalámbrica está protegida y se necesita una clave " "para conectar." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Abierto" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Configuración actual de la red" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Conexiones de red" @@ -3546,14 +3594,15 @@ 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:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Redes Wi-Fi cercanas" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Añadir conexión" @@ -3588,22 +3637,30 @@ msgstr "Ha fallado la eliminación de la conexión: no se encontró." msgid "Delete Connection" msgstr "Eliminar conexión" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "La configuración de Tor está actualizándose" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Editar conexión" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Editar" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Desactivar" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Activar" @@ -3714,7 +3771,7 @@ msgstr "Servidor DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Por defecto" @@ -3790,13 +3847,13 @@ msgstr "Espaciado" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3814,32 +3871,117 @@ msgstr "Mostrar la conexión %(name)s" msgid "Computer" msgstr "Ordenador" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Conexiones" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Eliminar la conexión %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Activa" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inactiva" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Actualización" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Crear…" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s está actualizado." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Red privada virtual" @@ -4484,111 +4626,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuración de derechos de acceso actualizada" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "Servidor SIP" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro proporciona varios servicios SIP que un software de teléfonos SIP " -"(softphone SIP) puede usar para realizar llamadas de voz y vídeo así como " -"mensajería instantánea. repro proporciona un servidor y cuentas de usuario " -"SIP que los clientes pueden usar para darse a conocer. También funciona como " -"un proxy para federar comunicaciones SIP con otros servidores de Internet de " -"forma parecida al email." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Para hacer llamadas SIP se necesita una aplicación cliente. Entre los " -"clientes disponibles están Jitsi (para " -"ordenadores) y CsipSimple (para teléfonos Android)." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Nota: Antes de usar repro tiene que configurar los dominios " -"y usuarias/os con el Panel web de configuración. Usuarias/os en el grupo admin " -"podrán acceder al panel de configuración. Después de configurar el dominio " -"es necesario reiniciar el servicio repro: desactive el servicio y vuélvalo a " -"activar." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi es un conjunto de proyectos de software libre que facilita disponer de " -"un sistema seguro de videoconferencia. El núcleo lo forman Jitsi Videobridge " -"y Jitsi Meet, que permiten mantener conferencias en Internet. Con otros " -"proyectos de la comunidad se pueden implementar servicios de audio, marcado " -"telefónico, grabación o transmisión simultánea." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Almacenamiento sin servidor" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore es un servidor de aplicaciones web sin servidor (serverless), cuyo objetivo es separar la aplicación " -"web de los datos. No importa desde dónde se sirva la aplicación, los datos " -"pueden guardarse en un servidor de almacenamiento sin servidor elegido por " -"el o la usuaria. Con reStore su {box_name} se convierte en un servidor de " -"almacenamiento sin servidor." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Puede crear y editar cuentas en la interfaz web de " -"reStore." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4704,7 +4741,7 @@ msgstr "Compartido" #| "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, " +"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 " @@ -4722,7 +4759,9 @@ msgid "Used" msgstr "Usado" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "Las particiones VFAT no están soportadas" #: plinth/modules/samba/templates/samba.html:103 @@ -4739,7 +4778,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4768,13 +4807,13 @@ msgstr "Nombre de compartición" msgid "Action" msgstr "Acción" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Añadir compartición" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5560,49 +5599,49 @@ msgstr "La operación solicitada no está permitida." msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid repository name." msgid "Invalid directory name." msgstr "Nombre de repositorio no válido." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Directorio de descarga" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Directorio de descarga" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Compartido" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6016,10 +6055,6 @@ msgstr "" "Transmission controla la compartición de archivos. Recuerde que BitTorrent " "no es anónimo." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Directorio de descarga" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6370,11 +6405,392 @@ msgstr "Cambiar clave de acceso" msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Nombre de kite inválido" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Publicar clave" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Publicada la clave en el servidor de claves." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Lista de direcciones IP, separadas por espacios" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Servidor de Chat" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Crear conexión" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Actualmente no hay comparticiones configuradas." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Añadir nuevo presentador" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Cliente de Chat" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Ha fallado la autenticación en el servidor remoto." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Añadir nuevo presentador" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Añadir conexión" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "Cliente IRC" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "¿Seguro que desea eliminar este repositorio?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "¿Seguro que desea eliminar este repositorio?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Cliente de Chat" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Crear conexión" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Dominio del servidor" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Seleccione una clave pública SSH verificada" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Dominio del servidor" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Añadir nuevo presentador" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Ya existe una compartición con este nombre." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "Cliente de correo" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Actualizar configuración" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "Cliente de correo" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Borrar todo" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archivo borrado." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Repositorio no encontrado" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Servicio personalizado añadido" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Tipo de conexión" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Actualizar configuración" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Editar conexión" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Eliminar conexión" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Compartición eliminada." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Genérica" @@ -6722,6 +7138,98 @@ msgstr "Aplicación desactivada" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "Servidor SIP" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro proporciona varios servicios SIP que un software de teléfonos SIP " +#~ "(softphone SIP) puede usar para realizar llamadas de voz y vídeo así como " +#~ "mensajería instantánea. repro proporciona un servidor y cuentas de " +#~ "usuario SIP que los clientes pueden usar para darse a conocer. También " +#~ "funciona como un proxy para federar comunicaciones SIP con otros " +#~ "servidores de Internet de forma parecida al email." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Para hacer llamadas SIP se necesita una aplicación cliente. Entre los " +#~ "clientes disponibles están Jitsi (para " +#~ "ordenadores) y CsipSimple (para teléfonos Android)." + +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Nota: Antes de usar repro tiene que configurar los " +#~ "dominios y usuarias/os con el Panel web de configuración. Usuarias/os en el " +#~ "grupo admin podrán acceder al panel de configuración. Después de " +#~ "configurar el dominio es necesario reiniciar el servicio repro: desactive " +#~ "el servicio y vuélvalo a activar." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi es un conjunto de proyectos de software libre que facilita disponer " +#~ "de un sistema seguro de videoconferencia. El núcleo lo forman Jitsi " +#~ "Videobridge y Jitsi Meet, que permiten mantener conferencias en Internet. " +#~ "Con otros proyectos de la comunidad se pueden implementar servicios de " +#~ "audio, marcado telefónico, grabación o transmisión simultánea." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Almacenamiento sin servidor" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore es un servidor de aplicaciones web sin servidor (serverless), cuyo objetivo es separar la " +#~ "aplicación web de los datos. No importa desde dónde se sirva la " +#~ "aplicación, los datos pueden guardarse en un servidor de almacenamiento " +#~ "sin servidor elegido por el o la usuaria. Con reStore su {box_name} se " +#~ "convierte en un servidor de almacenamiento sin servidor." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Puede crear y editar cuentas en la interfaz web de " +#~ "reStore." + #~ msgid "Module: %(module)s" #~ msgstr "Módulo: %(module)s" @@ -7145,9 +7653,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Eliminar instantánea %(number)s" -#~ msgid "Delete All" -#~ msgstr "Borrar todo" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Eliminar instantánea %(number)s" @@ -7367,9 +7872,6 @@ msgstr "Gujarati" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Activar reenvío en su servidor BIND" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Lista de direcciones IP, separadas por espacios" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Configuración de reenvío actualizada" @@ -7474,9 +7976,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Ir a Aplicaciones" -#~ msgid "Current Network Configuration" -#~ msgstr "Configuración actual de la red" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index a20f140b6..31b97ee0b 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1752,37 +1761,37 @@ msgstr "اتصال %(name)s را برای همیشه پاک م msgid "Delete %(name)s" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "Error occurred while publishing key." msgid "An error occurred while creating the repository." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} پاک شد." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" @@ -1791,8 +1800,8 @@ msgstr "نشد که {name} پاک شود: {error}" msgid "Documentation" msgstr "راهنما" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "کتاب راهنما" @@ -2456,6 +2465,10 @@ msgstr "بازپس‌گیری" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "پاک‌کردن" @@ -2776,7 +2789,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "نشانی" @@ -3146,49 +3159,49 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "شبکه‌ها" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "در حال استفاده از DNSSEC روی IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "نوع اتصال" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "نام اتصال" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 #, fuzzy msgid "Physical Interface" msgstr "درگاه فیزیکی" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "دستگاه شبکه‌ای که این اتصال باید به آن مربوط شود." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "ناحیهٔ فایروال" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3196,22 +3209,22 @@ msgstr "" "ناحیهٔ فایروال مشخص می‌کند که چه سرویس‌هایی روی این درگاه‌ها در دسترس باشند. " "گزینهٔ «داخلی» را تنها برای شبکه‌های مورد اعتماد انتخاب کنید." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 #, fuzzy msgid "IPv4 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3222,40 +3235,40 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "مشترک" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "ماسک شبکه" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" "اختیاری. اگر خالی بماند، یک ماسک شبکهٔ پیش‌فرض بر اساس نشانی به‌کار خواهد رفت." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "دروازه" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "اختیاری." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "دی‌ان‌اس" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3263,11 +3276,11 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "دی‌ان‌اس دوم" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3275,12 +3288,12 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 #, fuzzy msgid "IPv6 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3295,29 +3308,29 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "خودکار" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3329,7 +3342,7 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3341,55 +3354,55 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- برگزینید --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 #, fuzzy msgid "SSID" msgstr "شناسه" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "نام قابل رویت شبکه." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "حالت" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "سازمانی" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "نقطهٔ دسترسی" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "موردی" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "باند بسامد" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (۵ گیگاهرتز)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (۲٫۴ گیگاهرتز)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "کانال" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3397,11 +3410,11 @@ msgstr "" "اختیاری. کانال بی‌سیم برای محدودکردن باند بسامدی. خالی گذاشتن یا مقدار صفر به " "معنی گزینش خودکار است." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "شناسهٔ اصلی (BSSID)" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3410,25 +3423,60 @@ msgstr "" "اختیاری. شناسهٔ یکتا برای نقطهٔ دسترسی. اتصال تنها وقتی برقرار می‌شود که شناسهٔ " "اصلی (BSSID) نقطهٔ دسترسی مطابق مقدار واردشده باشد." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "حالت تأیید هویت" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "اگر شبکهٔ بی‌سیم امن است و از کاربران رمز می‌خواهد، WPA را برگزینید." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 #, fuzzy msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "باز" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "پیکربندی فعلی شبکه" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "اتصال‌های شبکه" @@ -3479,14 +3527,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "غیرفعال‌سازی اتصال شکست خورد: اتصالی پیدا نشد." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "شبکه‌های بی‌سیم در نزدیکی" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "افزودن اتصال" @@ -3521,22 +3570,30 @@ msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نش msgid "Delete Connection" msgstr "پاک‌کردن اتصال" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Configuration updated" +msgid "Router configuration type saved." +msgstr "پیکربندی به‌روز شد" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "ویرایش اتصال" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "ویرایش" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "غیرفعال‌سازی" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "فعال‌سازی" @@ -3647,7 +3704,7 @@ msgstr "دی‌ان‌اس" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "پیش‌فرض" @@ -3723,13 +3780,13 @@ msgstr "Spacing" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "اترنت" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3747,29 +3804,113 @@ msgstr "اتصال %(name)s را نشان بده" msgid "Computer" msgstr "کامپیوتر" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "اتصال" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "اتصال %(name)s را پاک کن" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "فعال" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "غیرفعال" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Create..." +msgid "Update..." +msgstr "ساختن..." + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "ساختن..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "Setup %(box_name)s Behind a Router" +msgstr "راه‌اندازی %(box_name)s" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "Open" @@ -3777,6 +3918,7 @@ msgid "OpenVPN" msgstr "باز" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4328,84 +4470,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "دی‌ان‌اس" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4492,7 +4556,7 @@ msgstr "مشترک" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4509,7 +4573,7 @@ msgid "Used" msgstr "به‌کاربرده" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4526,7 +4590,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4554,13 +4618,13 @@ msgstr "مشترک" msgid "Action" msgstr "کنش‌ها" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Shared" msgid "Open Share" msgstr "مشترک" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Shared" msgid "Group Share" @@ -5331,43 +5395,43 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "نام میزبان معتبر نیست" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "مشترک" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5723,10 +5787,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -6051,11 +6111,364 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid key." +msgstr "نام میزبان معتبر نیست" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "انتشار کلید" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "کلید در پایگاه کلیدها منتشر شد." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "سرور وب" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "ساختن اتصال" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +msgid "As a Client" +msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "افزودن اتصال" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +msgid "Add Client" +msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Update setup" +msgid "Update Client" +msgstr "به‌روزرسانی وضعیت" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "ساختن اتصال" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "SSH Fingerprint" +msgid "Server endpoints:" +msgstr "اثر انگشت SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "SSH Fingerprint" +msgid "Server endpoint:" +msgstr "اثر انگشت SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +msgid "Allowed Client" +msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "به‌روزرسانی وضعیت" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +msgid "Modify Client" +msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "پاک‌کردن" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "{name} deleted." +msgid "Client deleted." +msgstr "{name} پاک شد." + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "نوع اتصال" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "به‌روزرسانی وضعیت" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "ویرایش اتصال" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "پاک‌کردن اتصال" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} پاک شد." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6384,6 +6797,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "دی‌ان‌اس" + #, fuzzy #~ msgid "Module: %(module)s" #~ msgstr "واحد: %(module)s" @@ -6546,11 +6964,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "پاک‌کردن %(name)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "پاک‌کردن" - #, fuzzy #~| msgid "Delete %(name)s" #~ msgid "Delete snapshot #%(number)s" @@ -6665,9 +7078,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "رفتن به برنامه‌ها" -#~ msgid "Current Network Configuration" -#~ msgstr "پیکربندی فعلی شبکه" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 1524ec63c..6e7c34527 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1871,41 +1880,41 @@ msgstr "DELETE USER PERMANENTLY?" msgid "Delete %(name)s" msgstr "DELETE %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} DELETED." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" @@ -1914,8 +1923,8 @@ msgstr "COULD NOT DELETE {name}: {error}" msgid "Documentation" msgstr "DOCUMENTATION" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "MANUAL" @@ -2584,6 +2593,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "DELETE" @@ -2924,7 +2937,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "ADDRESS" @@ -3348,48 +3361,48 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "NETWORKS" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "USING DNSSEC ON IPV{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "CONNECTION TYPE" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "CONNECTION NAME" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "PHYSICAL INTERFACE" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "THE NETWORK DEVICE THAT THIS CONNECTION SHOULD BE BOUND TO." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "FIREWALL ZONE" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3397,21 +3410,21 @@ msgstr "" "THE FIREWALL ZONE WILL CONTROL WHICH SERVICES ARE AVAILABLE OVER THIS " "INTERFACES. SELECT INTERNAL ONLY FOR TRUSTED NETWORKS." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "EXTERNAL" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "INTERNAL" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3419,19 +3432,19 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "NETMASK" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3439,21 +3452,21 @@ msgstr "" "OPTIONAL VALUE. IF LEFT BLANK, A DEFAULT NETMASK BASED ON THE ADDRESS WILL " "BE USED." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "GATEWAY" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "OPTIONAL VALUE." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS SERVER" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3461,11 +3474,11 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "SECOND DNS SERVER" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3473,44 +3486,44 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3522,7 +3535,7 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3534,77 +3547,77 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- SELECT --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "THE VISIBLE NAME OF THE NETWORK." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "MODE" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "CHANNEL" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "AUTHENTICATION MODE" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3612,16 +3625,51 @@ msgstr "" "SELECT WPA IF THE WIRELESS NETWORK IS SECURED AND REQUIRES CLIENTS TO HAVE " "THE PASSWORD TO CONNECT." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 #, fuzzy #| msgid "OpenVPN" msgid "Open" msgstr "OPENVPN" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "CURRENT NETWORK CONFIGURATION" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "NETWORK CONNECTIONS" @@ -3674,14 +3722,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "FAILED TO DE-ACTIVATE CONNECTION: CONNECTION NOT FOUND." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "NEARBY WI-FI NETWORKS" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "ADD CONNECTION" @@ -3718,22 +3767,30 @@ msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND." msgid "Delete Connection" msgstr "DELETE CONNECTION" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "TOR CONFIGURATION IS BEING UPDATED" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "EDIT CONNECTION" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "EDIT" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "DEACTIVATE" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "ACTIVATE" @@ -3844,7 +3901,7 @@ msgstr "DNS SERVER" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "DEFAULT" @@ -3920,13 +3977,13 @@ msgstr "SPACING" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "ETHERNET" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "WI-FI" @@ -3944,29 +4001,113 @@ msgstr "SHOW CONNECTION %(name)s" msgid "Computer" msgstr "COMPUTER" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "CONNECTION" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "DELETE CONNECTION %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "ACTIVE" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "INACTIVE" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update URL" +msgid "Update..." +msgstr "UPDATE URL" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "CREATE..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s SETUP" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "NEXT" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "OpenVPN" @@ -3974,6 +4115,7 @@ msgid "OpenVPN" msgstr "OPENVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" @@ -4654,121 +4796,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "DNS SERVER" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"REPRO PROVIDES VARIOUS SIP SERVICES THAT A SIP SOFTPHONE CAN UTILIZE TO " -"PROVIDE AUDIO AND VIDEO CALLS AS WELL AS PRESENCE AND INSTANT MESSAGING. " -"REPRO PROVIDES A SERVER AND SIP USER ACCOUNTS THAT CLIENTS CAN USE TO LET " -"THEIR PRESENCE KNOWN. IT ALSO ACTS AS A PROXY TO FEDERATE SIP " -"COMMUNICATIONS TO OTHER SERVERS ON THE INTERNET SIMILAR TO EMAIL." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"TO MAKE SIP CALLS, A CLIENT APPLICATION IS NEEDED. AVAILABLE CLIENTS INCLUDE " -"JITSI (FOR COMPUTERS) AND CSIPSIMPLE (FOR ANDROID PHONES)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"NOTE: BEFORE USING REPRO, DOMAINS AND USERS WILL NEED TO " -"BE CONFIGURED USING THE WEB-BASED " -"CONFIGURATION PANEL. USERS IN THE ADMIN GROUP WILL BE ABLE TO " -"LOG IN TO THE REPRO CONFIGURATION PANEL. AFTER SETTING THE DOMAIN, IT IS " -"REQUIRED TO RESTART THE REPRO SERVICE. DISABLE THE SERVICE AND RE-ENABLE IT." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "RESTORE" - -#: plinth/modules/restore/__init__.py:39 -#, fuzzy -#| msgid "Unhosted Storage (reStore)" -msgid "Unhosted Storage" -msgstr "UNHOSTED STORAGE (RESTORE)" - -#: plinth/modules/restore/__init__.py:43 -#, fuzzy, python-brace-format -#| msgid "" -#| "reStore is a server for unhosted web " -#| "applications. The idea is to uncouple web applications from data. No " -#| "matter where a web application is served from, the data can be stored on " -#| "an unhosted storage server of user's choice. With reStore, your " -#| "%(box_name)s becomes your unhosted storage server." -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"RESTORE IS A SERVER FOR UNHOSTED WEB " -"APPLICATIONS. THE IDEA IS TO UNCOUPLE WEB APPLICATIONS FROM DATA. NO " -"MATTER WHERE A WEB APPLICATION IS SERVED FROM, THE DATA CAN BE STORED ON AN " -"UNHOSTED STORAGE SERVER OF USER'S CHOICE. WITH RESTORE, YOUR %(box_name)s " -"BECOMES YOUR UNHOSTED STORAGE SERVER." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"YOU CAN CREATE AND EDIT ACCOUNTS IN THE RESTORE WEB-" -"INTERFACE." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 #, fuzzy @@ -4888,7 +4915,7 @@ msgstr "ADD SERVICE" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4904,7 +4931,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4921,7 +4948,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4949,13 +4976,13 @@ msgstr "KITE NAME" msgid "Action" msgstr "ACTIONS" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "ADD SERVICE" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5749,47 +5776,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "INVALID HOSTNAME" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "DOWNLOAD DIRECTORY" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "DOWNLOAD DIRECTORY" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Add Service" msgid "Share" msgstr "ADD SERVICE" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6187,10 +6214,6 @@ msgstr "" "BITTORRENT IS A PEER-TO-PEER FILE SHARING PROTOCOL. TRANSMISSION DAEMON " "HANDLES BITORRENT FILE SHARING. NOTE THAT BITTORRENT IS NOT ANONYMOUS." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "DOWNLOAD DIRECTORY" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -6547,11 +6570,376 @@ msgstr "CHANGE PASSWORD" msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "INVALID KITE NAME" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "PUBLISH KEY" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "PUBLISHED KEY TO KEYSERVER." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "WEB SERVER" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "CREATE CONNECTION" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "IRC Client (Quassel)" +msgid "As a Client" +msgstr "IRC CLIENT (QUASSEL)" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "ADD CONNECTION" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "Quassel IRC Client" +msgid "Add Client" +msgstr "QUASSEL IRC CLIENT" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "IRC Client (Quassel)" +msgid "Update Client" +msgstr "IRC CLIENT (QUASSEL)" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "CREATE CONNECTION" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "SERVER DOMAIN" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Server port" +msgid "Server public key:" +msgstr "SERVER PORT" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "SERVER DOMAIN" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "This service already exists" +msgid "Client with public key already exists" +msgstr "THIS SERVICE ALREADY EXISTS" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client (Roundcube)" +msgid "Allowed Client" +msgstr "EMAIL CLIENT (ROUNDCUBE)" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "UPDATE SETUP" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client (Roundcube)" +msgid "Modify Client" +msgstr "EMAIL CLIENT (ROUNDCUBE)" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "DELETE" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "{name} deleted." +msgid "Client deleted." +msgstr "{name} DELETED." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "packages not found" +msgid "Client not found" +msgstr "PACKAGES NOT FOUND" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "ADDED CUSTOM SERVICE" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "CONNECTION TYPE" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "UPDATE SETUP" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "EDIT CONNECTION" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "DELETE CONNECTION" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} DELETED." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPOE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6922,6 +7310,93 @@ msgstr "APPLICATIONS" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "DNS SERVER" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "REPRO PROVIDES VARIOUS SIP SERVICES THAT A SIP SOFTPHONE CAN UTILIZE TO " +#~ "PROVIDE AUDIO AND VIDEO CALLS AS WELL AS PRESENCE AND INSTANT MESSAGING. " +#~ "REPRO PROVIDES A SERVER AND SIP USER ACCOUNTS THAT CLIENTS CAN USE TO LET " +#~ "THEIR PRESENCE KNOWN. IT ALSO ACTS AS A PROXY TO FEDERATE SIP " +#~ "COMMUNICATIONS TO OTHER SERVERS ON THE INTERNET SIMILAR TO EMAIL." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "TO MAKE SIP CALLS, A CLIENT APPLICATION IS NEEDED. AVAILABLE CLIENTS " +#~ "INCLUDE JITSI (FOR COMPUTERS) AND CSIPSIMPLE (FOR ANDROID PHONES)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "NOTE: BEFORE USING REPRO, DOMAINS AND USERS WILL NEED " +#~ "TO BE CONFIGURED USING THE WEB-BASED " +#~ "CONFIGURATION PANEL. USERS IN THE ADMIN GROUP WILL BE ABLE " +#~ "TO LOG IN TO THE REPRO CONFIGURATION PANEL. AFTER SETTING THE DOMAIN, IT " +#~ "IS REQUIRED TO RESTART THE REPRO SERVICE. DISABLE THE SERVICE AND RE-" +#~ "ENABLE IT." + +#~ msgid "reStore" +#~ msgstr "RESTORE" + +#, fuzzy +#~| msgid "Unhosted Storage (reStore)" +#~ msgid "Unhosted Storage" +#~ msgstr "UNHOSTED STORAGE (RESTORE)" + +#, fuzzy +#~| msgid "" +#~| "reStore is a server for unhosted web " +#~| "applications. The idea is to uncouple web applications from data. No " +#~| "matter where a web application is served from, the data can be stored on " +#~| "an unhosted storage server of user's choice. With reStore, your " +#~| "%(box_name)s becomes your unhosted storage server." +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "RESTORE IS A SERVER FOR UNHOSTED WEB " +#~ "APPLICATIONS. THE IDEA IS TO UNCOUPLE WEB APPLICATIONS FROM DATA. NO " +#~ "MATTER WHERE A WEB APPLICATION IS SERVED FROM, THE DATA CAN BE STORED ON " +#~ "AN UNHOSTED STORAGE SERVER OF USER'S CHOICE. WITH RESTORE, YOUR " +#~ "%(box_name)s BECOMES YOUR UNHOSTED STORAGE SERVER." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "YOU CAN CREATE AND EDIT ACCOUNTS IN THE RESTORE WEB-" +#~ "INTERFACE." + #~ msgid "Module: %(module)s" #~ msgstr "MODULE: %(module)s" @@ -7154,11 +7629,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "DELETE %(name)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "DELETE" - #, fuzzy #~| msgid "Delete %(name)s" #~ msgid "Delete snapshot #%(number)s" @@ -7406,9 +7876,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "GO TO APPS" -#~ msgid "Current Network Configuration" -#~ msgstr "CURRENT NETWORK CONFIGURATION" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7693,9 +8160,6 @@ msgstr "" #~ "PLEASE PROVIDE THE FOLLOWING BASIC INFORMATION TO COMPLETE THE SETUP " #~ "PROCESS." -#~ msgid "Next" -#~ msgstr "NEXT" - #~ msgid "" #~ "Many FreedomBox contributors and users are also available on the " #~ "#freedombox channel of the irc.oftc.net IRC network." diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 748b4f40c..bee197380 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-18 14:42+0000\n" "Last-Translator: James Valleroy \n" "Language-Team: French tutoriel Git." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Modification des dépôts Git autorisées" @@ -1777,33 +1786,33 @@ msgstr "Supprimer définitivement ce dépôt ?" msgid "Delete %(name)s" msgstr "Supprimer %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Dépôt créé." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 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:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Dépôt modifié." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Modifier un dépôt" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} supprimé." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} n'a pas abouti : {error}" @@ -1812,8 +1821,8 @@ msgstr "La suppression de {name} n'a pas abouti : {error}" msgid "Documentation" msgstr "Documentation" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuel" @@ -2501,6 +2510,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Supprimer" @@ -2873,7 +2886,7 @@ msgstr "" "manière." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adresse" @@ -3262,11 +3275,11 @@ msgstr "Tous" msgid "All web apps" msgstr "Toutes les applications web" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Réseaux" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3275,7 +3288,7 @@ msgstr "" "Wi-Fi ou le protocole PPPoE. Partager cette connexion avec d'autres " "périphériques sur le réseau local." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3283,32 +3296,32 @@ 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:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilise DNSSEC sur IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Type de Connexion" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Nom Connexion" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Interface Physique" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "L'appareil réseau auquel cette connexion devrait être liée." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Zone pare-feu" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3316,21 +3329,21 @@ msgstr "" "La zone pare-feu contrôlera quels services sont disponibles via ces " "interfaces. Sélectionnez « Interne » seulement pour des réseaux de confiance." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externe" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interne" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Méthode d'adressage IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3342,19 +3355,19 @@ msgstr "" "fera agir {box_name} en tant que routeur, lui fera configurer les clients " "sur ce réseau et partagera sa connexion Internet." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatique (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Partagée" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Masque de sous-réseau" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3362,21 +3375,21 @@ msgstr "" "Valeur optionnelle. Si laissée vide, un masque de sous-réseau basé sur " "l'adresse sera utilisé par défaut." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Passerelle" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Valeur optionnelle." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "Serveur DNS" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3385,11 +3398,11 @@ msgstr "" "d'adressage IPv4 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Second Serveur DNS" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3398,11 +3411,11 @@ msgstr "" "d'adressage IPv4 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Méthode d'adressage IPv6" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3411,27 +3424,27 @@ msgstr "" "Les méthodes « automatiques » feront en sorte que {box_name} obtienne sa " "configuration depuis ce réseau en tant que client." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatique" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatique, DHCP uniquement" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignorer" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Préfixe" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Valeur entre 1 et 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3440,7 +3453,7 @@ msgstr "" "d'adressage IPv6 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3449,54 +3462,54 @@ msgstr "" "d'adressage IPv6 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- sélectionner --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Le nom visible du réseau." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Point d'accès" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Bande de fréquences" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3505,11 +3518,11 @@ msgstr "" "fréquence sélectionnée. Une valeur vide ou égale à 0 signifie une sélection " "automatique." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3519,11 +3532,11 @@ msgstr "" "connexion à un point d'accès, connectez-vous seulement si la BSSID du point " "d'accès correspond à celle fournie. Exemple : 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Mode Authentification" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3531,14 +3544,49 @@ msgstr "" "Sélectionner WPA si votre réseau sans fil est sécurisé et s'il demande aux " "clients un mot de passe pour se connecter." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Ouvert" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Configuration réseau actuelle" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Connexions Réseau" @@ -3591,14 +3639,15 @@ 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:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Réseaux Wi-Fi à Proximité" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Ajouter connexion" @@ -3633,22 +3682,30 @@ msgstr "Échec de la suppression de la connexion : connexion introuvable." msgid "Delete Connection" msgstr "Supprimer Connexion" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "La configuration de Tor est en cours d'actualisation" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Modifier Connexion" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Modifier" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Désactiver" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Activer" @@ -3759,7 +3816,7 @@ msgstr "Serveur DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Défaut" @@ -3836,13 +3893,13 @@ msgstr "Espacement" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3860,32 +3917,117 @@ msgstr "Montrer la connexion %(name)s" msgid "Computer" msgstr "Machine" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Connexions" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Supprimer la connexion %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Actif" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inactif" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Actualiser" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Créer..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s est à jour." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "Suivant" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Réseau privé virtuel" @@ -4540,115 +4682,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuration des droits d'accès mise à jour" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "Serveur SIP" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro fournit divers services SIP qu'un téléphone logiciel SIP peut utiliser " -"pour passer des appels audio et vidéo tout comme assurer des services de " -"présence et de messagerie instantanée. repro fournit un serveur et des " -"comptes utilisateurs que les clients peuvent utiliser pour faire connaître " -"leur présence. Il remplit également la fonction de serveur mandataire pour " -"fédérer les communications SIP avec d'autres serveurs sur Internet de " -"manière comparable avec le courrier électronique." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Pour passer des appels SIP, une application cliente est nécessaire. Les " -"clients disponibles comprennent Jitsi " -"(pour les ordinateurs) et CSipSimple (pour les téléphones Android)." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Note : avant d'utiliser repro, les domaines et les " -"utilisateurs doivent être configurés au moyen du panneau de configuration basée sur une " -"interface web. Les utilisateurs du groupe admin auront la " -"possibilité de se connecter au panneau de configuration de repro. Après " -"avoir configuré le domaine, il est nécessaire de redémarrer le service " -"repro. Désactivez le service et réactivez-le." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi est un ensemble de projets open-source qui vous permettent de " -"facilement construire et déployer des solutions de video-conférence " -"sécurisées. Au cœur de Jitsi se trouvent Jitsi Videobridge et Jitsi Meet, " -"qui vous permettront de faire des conférences sur Internet, tandis que " -"d'autres projets ajoutent d'autres fonctionnalités, comme l'audio, les " -"appels entrants, l'enregistrement et la multi-diffusion." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Stockage non hébergé" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore est un serveur pour applications Web non hébergées. L'idée est de découpler les applications Web des " -"données qu'elles gèrent. Le serveur sur lequel se trouve l'application Web " -"n'a alors plus d'importance. Les données peuvent être stockées sur le " -"serveur de stockage non hébergé découlant du choix de l'utilisateur. En " -"utilisant reStore, votre machine {box_name} devient votre serveur de " -"stockage non hébergé." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Vous pouvez créer et modifier les comptes sur l'interface Web reStore." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4761,8 +4794,12 @@ msgid "Shares" msgstr "Partages" #: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directories will be shared on selected " +#| "disks, not the whole disk." msgid "" -"Note: only specially created directories will be shared on selected disks, " +"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 " @@ -4778,7 +4815,9 @@ msgid "Used" msgstr "Utilisé" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +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:103 @@ -4797,8 +4836,12 @@ msgid "Users who can currently access group and home shares" msgstr "Utilisateurs pouvant accéder aux partages de groupe et domestiques" #: plinth/modules/samba/templates/samba.html:113 +#, fuzzy +#| msgid "" +#| "Users who need to re-enter their password on the password change page to " +#| "access group and home shares" msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" "Utilisateurs devant ré-entrer leur mot de passe sur la page de changement de " @@ -4824,11 +4867,11 @@ msgstr "Nom du partage" msgid "Action" msgstr "Action" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "Ouvrir un partage" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "Partage de groupe" @@ -4982,8 +5025,8 @@ msgid "" "potentially compromised app to the rest of the system." msgstr "" "Pour les applications fournissant des services, la colonne \"Bac à sable\" " -"montre si les fonctionnalités d’isolation (sandboxing) sont utilisées. L’" -"isolation limite l’impact sur le reste du système d’une application " +"montre si les fonctionnalités d’isolation (sandboxing) sont utilisées. " +"L’isolation limite l’impact sur le reste du système d’une application " "potentiellement compromise." #: plinth/modules/security/templates/security_report.html:48 @@ -5612,39 +5655,39 @@ msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." msgid "The device is mounted by another user." msgstr "Le media est monté par un autre utilisateur." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "Nom de répertoire invalide." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "Le répertoire n’existe pas." -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "Le chemin n’est pas un répertoire." -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "Le répertoire n’est pas lisible par l’utilisateur." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "L’utilisateur ne peut pas écrire dans le répertoire." -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "Répertoire" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "Sous-répertoire (optionnel)" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "Partage" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "Autre répertoire (indiquer ci-dessous)" @@ -6050,10 +6093,6 @@ msgstr "" "Transmission permet le partage de fichiers Bitorrent. Noter que " "l'utilisation de Bitorrent n'est pas anonyme." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Répertoire de téléchargement" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6408,11 +6447,392 @@ msgstr "Changer Mot de Passe" msgid "Password changed successfully." msgstr "Mot de passe changé avec succès." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Nom Kite invalide" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Publier la clef" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Clef publiée sur le serveur de clefs." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Une liste d'adresses IP séparées par des espaces" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Serveur de discussion" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Créer Connexion" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Aucun partage actuellement configuré." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Ajouter un nouvel introducteur" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Client de discussion" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Échec de l'authentification sur le serveur distant." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Ajouter un nouvel introducteur" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Ajouter connexion" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "Client IRC" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Êtes-vous sûr de vouloir supprimer ce dépôt ?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Êtes-vous sûr de vouloir supprimer ce dépôt ?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Client de discussion" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Créer Connexion" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Domaine du serveur" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Sélectionnez une clé SS publique vérifiée" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Domaine du serveur" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Ajouter un nouvel introducteur" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Un partage existe déjà avec ce nom." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "Client courriel" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Actualiser la configuration" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "Client courriel" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "Supprimer" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archive supprimée." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Dépôt introuvable" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Service personnalisé ajouté" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Type de Connexion" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Actualiser la configuration" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Modifier connexion" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Supprimer Connexion" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Partage supprimé." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Générique" @@ -6764,6 +7184,103 @@ msgstr "Application désactivée" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "Serveur SIP" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro fournit divers services SIP qu'un téléphone logiciel SIP peut " +#~ "utiliser pour passer des appels audio et vidéo tout comme assurer des " +#~ "services de présence et de messagerie instantanée. repro fournit un " +#~ "serveur et des comptes utilisateurs que les clients peuvent utiliser pour " +#~ "faire connaître leur présence. Il remplit également la fonction de " +#~ "serveur mandataire pour fédérer les communications SIP avec d'autres " +#~ "serveurs sur Internet de manière comparable avec le courrier électronique." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Pour passer des appels SIP, une application cliente est nécessaire. Les " +#~ "clients disponibles comprennent Jitsi " +#~ "(pour les ordinateurs) et CSipSimple (pour les téléphones " +#~ "Android)." + +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Note : avant d'utiliser repro, les domaines et les " +#~ "utilisateurs doivent être configurés au moyen du panneau de configuration basée sur une " +#~ "interface web. Les utilisateurs du groupe admin auront la " +#~ "possibilité de se connecter au panneau de configuration de repro. Après " +#~ "avoir configuré le domaine, il est nécessaire de redémarrer le service " +#~ "repro. Désactivez le service et réactivez-le." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi est un ensemble de projets open-source qui vous permettent de " +#~ "facilement construire et déployer des solutions de video-conférence " +#~ "sécurisées. Au cœur de Jitsi se trouvent Jitsi Videobridge et Jitsi Meet, " +#~ "qui vous permettront de faire des conférences sur Internet, tandis que " +#~ "d'autres projets ajoutent d'autres fonctionnalités, comme l'audio, les " +#~ "appels entrants, l'enregistrement et la multi-diffusion." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Stockage non hébergé" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore est un serveur pour applications Web non hébergées. L'idée est de découpler les applications Web des " +#~ "données qu'elles gèrent. Le serveur sur lequel se trouve l'application " +#~ "Web n'a alors plus d'importance. Les données peuvent être stockées sur le " +#~ "serveur de stockage non hébergé découlant du choix de l'utilisateur. En " +#~ "utilisant reStore, votre machine {box_name} devient votre serveur de " +#~ "stockage non hébergé." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Vous pouvez créer et modifier les comptes sur l'interface Web reStore." + #~ msgid "Module: %(module)s" #~ msgstr "Module: %(module)s" @@ -7199,11 +7716,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Supprimer l'instantané numéro #%(number)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "Supprimer" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Effacer l'instantané #%(number)s" @@ -7380,9 +7892,6 @@ msgstr "Gujarati" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Activer le transfert des requêtes DNS sur votre serveur BIND" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Une liste d'adresses IP séparées par des espaces" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Configuration de forwarding mise à jour" @@ -7509,9 +8018,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Aller aux Applis" -#~ msgid "Current Network Configuration" -#~ msgstr "Configuration réseau actuelle" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7785,9 +8291,6 @@ msgstr "Gujarati" #~ "Cliquer sur « Suivant » pour achever la configuration en enregistrant les " #~ "informations de base." -#~ msgid "Next" -#~ msgstr "Suivant" - #~ msgid "" #~ "Many FreedomBox contributors and users are also available on the " #~ "#freedombox channel of the irc.oftc.net IRC network." diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index a0a92e4a9..f45ec9721 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1556,33 +1565,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1591,8 +1600,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -2156,6 +2165,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2450,7 +2463,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2785,68 +2798,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2854,179 +2867,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3077,14 +3123,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3119,22 +3166,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3245,7 +3298,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3311,13 +3364,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3335,32 +3388,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3901,82 +4036,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4060,7 +4119,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4074,7 +4133,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4091,7 +4150,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4113,11 +4172,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4812,39 +4871,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5186,10 +5245,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5502,11 +5557,326 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Servidor web" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index fb5f9ef65..c1b0a58d2 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1717,35 +1726,35 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Documentation" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1754,8 +1763,8 @@ msgstr "" msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "માર્ગદર્શિકા" @@ -2323,6 +2332,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2635,7 +2648,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2974,68 +2987,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3043,179 +3056,214 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "General Configuration" +msgid "Preferred router configuration" +msgstr "સામાન્ય ગોઠવણી" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3266,14 +3314,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3308,22 +3357,30 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "DNS server configuration updated" +msgid "Router configuration type saved." +msgstr "DNS સર્વર ગોઠવણી સુધરી" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3434,7 +3491,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3500,13 +3557,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3524,34 +3581,118 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Conversations" msgid "Connections" msgstr "વાતચીત" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update URL" +msgid "Update..." +msgstr "URL અપડેટ કરો" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4092,82 +4233,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4251,7 +4316,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4267,7 +4332,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4284,7 +4349,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4306,11 +4371,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -5012,41 +5077,41 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5390,10 +5455,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5716,11 +5777,348 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid key." +msgstr "અમાન્ય હોસ્ટનું નામ" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "જગ્યા થી અલગ પાડેલ IP સરનામાઓ ની યાદી" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "ચેટ સર્વર" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Update setup" +msgid "Update Client" +msgstr "સેટઅપ અપડેટ કરો" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Conversations" +msgid "Update Connection" +msgstr "વાતચીત" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoints:" +msgstr "સર્વર સંચાલન" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoint:" +msgstr "સર્વર સંચાલન" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "સેટઅપ અપડેટ કરો" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Conversations" +msgid "Connection to Server" +msgstr "વાતચીત" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "સેટઅપ અપડેટ કરો" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Error installing application: {error}" +msgid "Modify Connection to Server" +msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Direct connection to the Internet." +msgid "Delete Connection to Server" +msgstr "ઇન્ટરનેટ સાથે સીધો જોડાણ." + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6132,15 +6530,9 @@ msgstr "" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "આપના BIND સર્વર પર આગળ મોકલવા માટે સક્ષમ કરો" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "જગ્યા થી અલગ પાડેલ IP સરનામાઓ ની યાદી" - #~ msgid "Set forwarding configuration updated" #~ msgstr "રવાના કરવાની ગોઠવણીને સુધારેલી ગોઠવો" #, fuzzy #~ msgid "Enable DNSSEC configuration updated" #~ msgstr "DNSSEC ગોઠવણીને સુધારેલી શરુ કરો" - -#~ msgid "DNS server configuration updated" -#~ msgstr "DNS સર્વર ગોઠવણી સુધરી" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 403d11047..e303bff63 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2018-08-09 20:39+0000\n" "Last-Translator: Gayathri Das \n" "Language-Team: Hindi Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1801,37 +1810,37 @@ msgstr "इस स्नैपशॉट को स्थाई रूप से msgid "Delete %(name)s" msgstr "%(name)s हटाईये" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} हटा गया है." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" @@ -1840,8 +1849,8 @@ msgstr "{name} नहीं हटा गया है: {error}" msgid "Documentation" msgstr "प्रलेखन" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "मैन्युअल" @@ -2480,6 +2489,10 @@ msgstr "री-ओबटैन" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "हटाईये" @@ -2827,7 +2840,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "अक्षम होने पर खिलाड़ियों नहीं मर सकते या किसी चोट लग सकते." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "ऍड्रेस" @@ -3194,48 +3207,48 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "नेटवर्क्‍स" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "कनेक्शन टाइप" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "कनेक्शन का नाम" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "भौतिक इंटरफेस" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "जो नेटवर्क डिवाइस जिस को इस कनेक्शन बाउंड होना चाहिए." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "फ़ायरवॉल ज़ोन" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3243,21 +3256,21 @@ msgstr "" "इस इंटरफ़ेस में फ़ायरवॉल ज़ोन हैं जिसको नियंत्रित करेगा कि कौन-सी सेवाएं उपलब्ध है. सिर्फ " "भरोसेमंद नेटवर्क्स के लिए आंतरिक चुनिये." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "बाहरी" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "आंतरिक" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "आईपीवी 4 एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3268,19 +3281,19 @@ msgstr "" "\"शएरड\" मेथड {box_name} राउटर के रूप में कार्य करेगा, इस नेटवर्क पर क्लाइंटस कॉंफ़िगरे " "करेगा और इंटरनेट कनेक्शन साझा करेगा." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "ऑटोमैटिक(DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "साझा किया गया" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "नेटमॉस्क" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3288,21 +3301,21 @@ msgstr "" "वैकल्पिक मूल्य. अगर इससे छोड़ा जाता है, एक एड्रेस पर आधारित डिफ़ॉल्ट नेटमॉस्क उपयोग किया " "जाएगा." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "गेटवे" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "वैकल्पिक मूल्य." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "डीएनएस सर्वर" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3310,11 +3323,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "दूसरा DNS सर्वर" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3322,11 +3335,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "आइपीवी एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3335,27 +3348,27 @@ msgstr "" "\"ऑटोमैटिक\" मेथडस {box_name} को इस नेटवर्क से कॉंफ़िगरेशन प्राप्त करना पडेगा और एक " "क्लाइंट बना देगी." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "ऑटोमैटिक" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "ऑटोमैटिक, सिर्फ DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "नज़रअंदाज़ करे" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "उपसर्ग" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "1 और १२८ के बीच एक मूल्य." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3363,7 +3376,7 @@ msgstr "" "वैकल्पिक मूल्य.अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3371,54 +3384,54 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- चुनिये --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "एसएसआईडी" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "यह नेटवर्क का दृश्य नाम." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "मोड" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "इंफ्रास्ट्रक्चर" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "अभिगम केंद्र" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "एड-हॉक" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "फ्रीक्वेंसी बैंड" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "ए ( 5 जीएचज़ि)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "बी/जी (२.४ जीएचज़ि)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "चैनल" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3426,11 +3439,11 @@ msgstr "" "वैकल्पिक मूल्य. चुने हूआ फ्रीक्वेंसी बैंड में वायरलेस चैनल, प्रतिबंधित करने के लिये. रिक्त या 0 मूल्य " "का मतलब है ऑटोमैटिक चुनाव." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "बिएसएसआई़़डी" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3440,25 +3453,60 @@ msgstr "" "एक्सेस पॉइंट का BSSID प्रदान की गई से मैच करते है तो कनेक्ट करें. उदाहरण: 00:11:22:aa:bb:" "cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "प्रमाणीकरण मोड" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" "अगर वायरलेस नेटवर्क सुरक्षित है और क्लाइंट को कनेक्ट करने के लिए पासवर्ड ज़रुरत है WPA चुनिये." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "खुला" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Preferred router configuration" +msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "नेटवर्क कनेक्शन्स" @@ -3509,14 +3557,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "कनेक्शन को निष्क्रिय करने में विफल: कनेक्शन नहीं मिला." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "पास के वाई-फाई नेटवर्क" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "कनेक्शन जोड़ें" @@ -3551,22 +3600,30 @@ msgstr "कनेक्शन हटाने में विफल: कने msgid "Delete Connection" msgstr "कनेक्शन हटाएँ" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "टोर कॉन्फ़िगरेशन अपडेट किया जा रहा है" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "कनेक्शन संपादित करें" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "संपादन" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "निष्क्रिय" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "सक्रिय" @@ -3677,7 +3734,7 @@ msgstr "डीएनएस सर्वर" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "डिफ़ॉल्ट" @@ -3752,13 +3809,13 @@ msgstr "स्‍पेसिंग" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "इथरनेट" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "वाई-फ़ाई" @@ -3776,34 +3833,119 @@ msgstr "कनेक्शन दिखाइये %(name)s" msgid "Computer" msgstr "कंप्यूटर" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "कनेक्शन" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "कनेक्शन हटाइये %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "एक्टिव" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "इनएक्टिव" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "अपडेट" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "बनाएँ…" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s उद्दिनांकित है." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "ओपन वीपीएन" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "वर्चुअल प्राइवेट नेटवर्क" @@ -4457,112 +4599,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ऐकसेस अधिकार कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "रेप्रो" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP सर्वर" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"रेप्रो विभिन्न SIP सर्विसस प्रदान करता है जो एक SIP softphone उपयोग कर सकते हैं ऑडियो " -"और वीडियो कॉल प्रदान करने के लिये और प्रिसेंस और इन्सटेन्ट संदेश प्रदान करने के लिये. रेप्रो " -"एक सर्वर और SIP यूसर अकाउंटस प्रदान करता है जो क्लाइंटस अपनी मौजूदगी को जाने के लिए " -"उपयोग कर सकते हैं. यह SIP संचार इंटरनेट पर अंय सर्वरों को एकता कायम करने के लिये एक " -"प्रॉक्सी के रूप में कार्य करता है, ईमेल के जैसे." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"SIP कॉल करने के लिए, एक क्लाइंट एप्लिकेशन का जरुरत है. उपलब्ध क्लाइंटस में शामिल हैं Jitsi (कंप्यूटरों के लिए) और CSipSimple(Android " -"फ़ोन के लिए)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"नोट: रेप्रो का उपयोग करने से पहले, डोमेन और यूसरसवेब-बेस्ड कॉन्फ़िगरेशन पैनल का उपयोग करके कॉन्फ़िगर करने कि जरुरत है. " -"admin समूह में यूसरस रेप्रो कॉन्फ़िगरेशन पैनल से लाॅग इन कर सकेंगे. डोमेन को सेट करने " -"के बाद, रेप्रो सर्विस रिस्टार्ट करने का जरुरत है. सर्विस को अक्षम करें और इसे पुन: सक्षम करें." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "जिटसि मीट" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"जिटसि एक खुला-सोर्स परियोजनाओं का सेट है जिसमे आप आसानी से वीडियोकॉन्फ़्रेंसिंग समाधान " -"बनाने और तैनात कर सकता है. जिटसि विडियोब्ड्रिज आैर जिटसि मीट जिटसि का एक बड़ा हिस्सा " -"है, जो आपको इंटरनेट पर सम्मेलनों देता है, जबकि समुदाय में अंय परियोजनाओं ऑडियो, डायल-इन, " -"रिकॉर्डिंग, और सैमुलकास्टिंग जैसे सुविधाओं को सक्षम कर रहे हैं." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "सीसिपसिमपल" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "रीस्‍टोर" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "अनहोस्ट्ड स्टोरेज" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"रीस्‍टोर अनहोस्टेड वेब एप्लिकेशनस के लिए एक सर्वर " -"है. विचार है कि वेब एप्लिकेशनस डेटा से जुदा करना है. कोई फर्क नहीं पड़ता कि जहां एक वेब " -"एप्लिकेशन से सर्वर कि है, डेटा यूसर को पसंद का एक अनहोस्ट स्टोरेज सर्वर पर स्टोर किया जा " -"सकता है. रीस्‍टोर के साथ आपना {box_name} आपका अनहोस्टेड स्टोरेज सर्वर बन जाता है." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"आप स्टोर वेब-इंटरफ़ेस में अकाउंट बना और संपादित कर सकते हैं." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4668,7 +4704,7 @@ msgstr "साझा किया गया" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4684,7 +4720,7 @@ msgid "Used" msgstr "उपयोग किया गया" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4701,7 +4737,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4729,13 +4765,13 @@ msgstr "शेयर जोड़ा गया." msgid "Action" msgstr "एक्सआयन" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "शेयर जोड़ें" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5514,49 +5550,49 @@ msgstr "अनुरोधित विकल्प का उपयोग क msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "अमान्य होस्टनाम" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "डायरेक्टरी डाउनलोड करें" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "डायरेक्टरी डाउनलोड करें" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "साझा किया गया" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5959,10 +5995,6 @@ msgstr "" "बिटटोरेंट एक पीअर-टू-पीअर फ़ाइल साझा प्रोटोकॉल है. ट्रांसमिशन डेमॉन बिटटोरेंट फ़ाइल साझा " "संभालती है. नोट-बिटटोरेंट अनाम नहीं है." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "डायरेक्टरी डाउनलोड करें" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "टिनी टिनी आरएसएस" @@ -6320,11 +6352,383 @@ msgstr "पासवर्ड बदलिये" msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "अमान्य कईट नाम" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "चाबी प्रकाशित करें" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "चाबी किसर्वर पर प्रकाशित किया गया." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +msgid "Client IP address provided by server" +msgstr "IP ऐड्रेस की सूची, रिक्त स्थानो से अलग" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "चाट सर्वर" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "कनेक्शन बनाएँ" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "वर्तमान में कोई शेयर कॉन्फ़िगर नहीं किया गया है." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "नया इंट्रोड्यूसर जोड़ें" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "चैट क्लाइंट" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "नया इंट्रोड्यूसर जोड़ें" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "कनेक्शन जोड़ें" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "आईआरसी क्लाइंट" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "चैट क्लाइंट" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "कनेक्शन बनाएँ" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "सर्वर डोमेन" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Server port number" +msgid "Server public key:" +msgstr "सर्वर पोर्ट नंबर" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "सर्वर डोमेन" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "नया इंट्रोड्यूसर जोड़ें" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "इस नाम का एक शयर पहले से मौजूद है." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "ईमेल क्लाइंट" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "सेटअप अपडेट" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "ईमेल क्लाइंट" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "सब को हटाएँ" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "पुरालेख हटा गया है." + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "जोड़ा गया कस्टम सर्विस" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "कनेक्शन टाइप" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "सेटअप अपडेट" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "कनेक्शन संपादित करें" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "कनेक्शन हटाएँ" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "शेयर हटाया गया." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "पीपीपीअोइ" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "जेनेरिक" @@ -6663,6 +7067,101 @@ msgstr "एप्लीकेशन अक्षम किया गया ह msgid "Gujarati" msgstr "" +#~ msgid "repro" +#~ msgstr "रेप्रो" + +#~ msgid "SIP Server" +#~ msgstr "SIP सर्वर" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "रेप्रो विभिन्न SIP सर्विसस प्रदान करता है जो एक SIP softphone उपयोग कर सकते हैं " +#~ "ऑडियो और वीडियो कॉल प्रदान करने के लिये और प्रिसेंस और इन्सटेन्ट संदेश प्रदान करने के " +#~ "लिये. रेप्रो एक सर्वर और SIP यूसर अकाउंटस प्रदान करता है जो क्लाइंटस अपनी मौजूदगी को " +#~ "जाने के लिए उपयोग कर सकते हैं. यह SIP संचार इंटरनेट पर अंय सर्वरों को एकता कायम करने " +#~ "के लिये एक प्रॉक्सी के रूप में कार्य करता है, ईमेल के जैसे." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "SIP कॉल करने के लिए, एक क्लाइंट एप्लिकेशन का जरुरत है. उपलब्ध क्लाइंटस में शामिल हैं Jitsi (कंप्यूटरों के लिए) और CSipSimple(Android फ़ोन के लिए)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "नोट: रेप्रो का उपयोग करने से पहले, डोमेन और यूसरसवेब-बेस्ड कॉन्फ़िगरेशन पैनल का उपयोग करके कॉन्फ़िगर करने कि " +#~ "जरुरत है. admin समूह में यूसरस रेप्रो कॉन्फ़िगरेशन पैनल से लाॅग इन कर सकेंगे. " +#~ "डोमेन को सेट करने के बाद, रेप्रो सर्विस रिस्टार्ट करने का जरुरत है. सर्विस को अक्षम करें " +#~ "और इसे पुन: सक्षम करें." + +#~ msgid "Jitsi Meet" +#~ msgstr "जिटसि मीट" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "जिटसि एक खुला-सोर्स परियोजनाओं का सेट है जिसमे आप आसानी से वीडियोकॉन्फ़्रेंसिंग समाधान " +#~ "बनाने और तैनात कर सकता है. जिटसि विडियोब्ड्रिज आैर जिटसि मीट जिटसि का एक बड़ा " +#~ "हिस्सा है, जो आपको इंटरनेट पर सम्मेलनों देता है, जबकि समुदाय में अंय परियोजनाओं ऑडियो, " +#~ "डायल-इन, रिकॉर्डिंग, और सैमुलकास्टिंग जैसे सुविधाओं को सक्षम कर रहे हैं." + +#~ msgid "CSipSimple" +#~ msgstr "सीसिपसिमपल" + +#~ msgid "reStore" +#~ msgstr "रीस्‍टोर" + +#~ msgid "Unhosted Storage" +#~ msgstr "अनहोस्ट्ड स्टोरेज" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "रीस्‍टोर अनहोस्टेड वेब एप्लिकेशनस के लिए एक " +#~ "सर्वर है. विचार है कि वेब एप्लिकेशनस डेटा से जुदा करना है. कोई फर्क नहीं पड़ता कि जहां " +#~ "एक वेब एप्लिकेशन से सर्वर कि है, डेटा यूसर को पसंद का एक अनहोस्ट स्टोरेज सर्वर पर स्टोर " +#~ "किया जा सकता है. रीस्‍टोर के साथ आपना {box_name} आपका अनहोस्टेड स्टोरेज सर्वर बन " +#~ "जाता है." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "आप स्टोर वेब-इंटरफ़ेस में अकाउंट बना और संपादित कर सकते हैं." + #~ msgid "Module: %(module)s" #~ msgstr "मॉड्यूल: %(module)s" @@ -7123,9 +7622,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "स्नैपशॉट हटाएं #%(number)s" -#~ msgid "Delete All" -#~ msgstr "सब को हटाएँ" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "स्नैपशॉट हटाऍं #%(number)s" @@ -7268,7 +7764,3 @@ msgstr "" #, fuzzy #~ msgid "Language changed" #~ msgstr "भाषा बदल दी गयी है" - -#, fuzzy -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "IP ऐड्रेस की सूची, रिक्त स्थानो से अलग" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index df6be8081..5f46b8752 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-03 07:55+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian Git gyorstalpalót (angolul)." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Olvasási-írási hozzáférés a Git tárolókhoz" @@ -1768,33 +1777,33 @@ 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:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Tároló létrehozva." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Hiba történt a tároló létrehozása közben." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Tároló szerkesztve." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} törölve." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" @@ -1803,8 +1812,8 @@ msgstr "{name} nem törölhető: {error}" msgid "Documentation" msgstr "Dokumentáció" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kézikönyv" @@ -2474,6 +2483,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Törlés" @@ -2844,7 +2857,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Ha le van tiltva, a játékosok nem fognak meghalni ill. megsérülni." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Cím" @@ -3228,48 +3241,48 @@ msgstr "Összes" msgid "All web apps" msgstr "Összes webalkalmazás" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Hálózatok" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC használata IPv{kind} felett" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Kapcsolat típusa" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Kapcsolat neve" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fizikai interfész" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "A hálózati eszköz, amihez ez a kapcsolat kötve lesz." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Tűzfal zóna" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3277,21 +3290,21 @@ msgstr "" "A tűzfal zóna szabályozza, hogy mely szolgáltatások lesznek elérhetők ezen " "az interfészen. Csak a megbízható hálózatokhoz válaszd a „Belső”-t." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Külső" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Belső" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 címzési módszer" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3303,19 +3316,19 @@ msgstr "" "módszertől a {box_name} eszközöd úgy fog viselkedni, mint egy router, " "beállítja a klienseket ezen a hálózaton és megosztja az internet kapcsolatát." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatikus (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Megosztott" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Hálózati maszk" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3323,21 +3336,21 @@ msgstr "" "Opcionális. Ha üresen hagyod, a címen alapuló alapértelmezett hálózati maszk " "lesz használva." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Átjáró" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Opcionális." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3346,11 +3359,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Másodlagos DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3359,11 +3372,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6 címzési módszer" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3372,27 +3385,27 @@ msgstr "" "Az „Automatikus” módszer esetén a {box_name} eszköz ügyfél lesz, amely során " "a beállításokat a csatlakoztatott hálózatról kéri le." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatikus" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatikus, csak DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Kihagyás" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Előtag" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Értéke 1 és 128 között." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3401,7 +3414,7 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3410,54 +3423,54 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- válassz --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "A név, amellyel a hálózat látható." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mód" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastuktúra" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Hozzáférési pont" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frekvenciasáv" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Csatorna" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3466,11 +3479,11 @@ msgstr "" "korlátozódik a működés. Üresen hagyva vagy 0 értéket megadva automatikus " "választást jelent." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3480,11 +3493,11 @@ msgstr "" "ponthoz kapcsolódsz, csak akkor kapcsolódj ha a hozzáférési pont BSSID-je " "megegyezik az itt megadottal. Például: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Hitelesítési mód" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3492,14 +3505,49 @@ msgstr "" "Válaszd a WPA-t ha a vezeték nélküli hálózatod biztonságos és az ügyfelektől " "jelszót kér a csatlakozáshoz." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Nyílt" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Preferred router configuration" +msgstr "Hiba történt a beállítás közben." + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Hálózati kapcsolatok" @@ -3552,14 +3600,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Kapcsolat deaktiválása sikertelen: kapcsolat nem található." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi hálózatok a közelben" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Kapcsolat hozzáadása" @@ -3594,22 +3643,30 @@ msgstr "A kapcsolat törlése sikertelen, mivel az nem található." msgid "Delete Connection" msgstr "Kapcsolat törlése" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "A Tor beállításainak frissítése folyamatban" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Kapcsolat szerkesztése" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Szerkesztés" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Deaktivál" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Aktivál" @@ -3720,7 +3777,7 @@ msgstr "DNS szerver" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Alapértelmezett" @@ -3797,13 +3854,13 @@ msgstr "Térköz" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3821,34 +3878,119 @@ msgstr "%(name)s kapcsolat megjelenítése" msgid "Computer" msgstr "Számítógép" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Kapcsolat" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "%(name)s kapcsolat törlése" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktív" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inaktív" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Frissítés" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Létrehoz..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "A %(box_name)s naprakész." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtuális magánhálózat" @@ -4516,121 +4658,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Hozzáférési jogok beállításai frissítve" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP szerver" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"A repro különféle SIP szolgáltatásokat nyújt, amelyeket egy SIP softphone " -"képes felhasználni audió– és videóhívásokra, valamint jelenlét és azonnali " -"üzenetküldés céljára. A repro biztosítja a kiszolgálót és a SIP felhasználói " -"fiókokat, melyeket a kliensek felhasználhatnak a jelenlétük ismertté " -"tételéhez. Továbbá proxy-ként is viselkedik, hogy összekapcsolja a SIP " -"kommunikációt az Interneten lévő többi kiszolgálóval, hasonlóképpen az e-" -"mailhez." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"A SIP hívások kezdeményezéséhez egy kliens alkalmazásra is szükség lesz. " -"Néhány kliens: Jitsi (számítógépekre) és " -"CSipSimple (Android telefonokra)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Megjegyzés: Mielőtt használnád a repro-t, a domain-eket és " -"a felhasználókat be kell állítani a webes " -"beállítási panelen. Az admin csoport felhasználói be tudnak " -"majd jelentkezni a repro beállítási paneljére. A domain beállítása után a " -"repro szolgáltatás újraindítása szükséges. Tiltsd le a szolgáltatást, majd " -"engedélyezd újra azt." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"A Jitsi egy sor nyílt-forráskódú projekt, amely lehetővé teszi biztonságos " -"videokonferencia megoldások könnyű felépítését és telepítését. A Jitsi fő " -"elemei a Jitsi Videobridge és a Jitsi Meet, amelyek lehetővé teszik, hogy " -"konferenciát tarts az interneten, amíg az egyéb közösségi projektek olyan " -"képességeket adnak hozzá, mint hang, betárcsázás, felvétel és párhuzamos " -"közvetítés." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Nem hosztolt adattároló" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore a kiszolgálója az unhosted (nem " -"hosztolt) webes alkalmazásoknak. Az elképzelés az, hogy szétválasztják a " -"webes alkalmazást az adatoktól. Nem számít honnan kerül kiszolgálásra a " -"webes alkalmazás, az adat tárolható a felhasználó által választott nem " -"hosztolt adattároló szerveren. A reStore-al, a Te {box_name} eszközöd lesz " -"az a nem hosztolt adattároló szerver." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Létrehozhatsz ill. módosíthatsz felhasználói fiókokat a reStore webes felületén." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4738,7 +4765,7 @@ msgstr "Megosztott" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4754,7 +4781,7 @@ msgid "Used" msgstr "Felhasznált" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4771,7 +4798,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4799,13 +4826,13 @@ msgstr "Megosztás hozzáadva." msgid "Action" msgstr "Műveletek" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, 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 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5622,49 +5649,49 @@ msgstr "Nem használhatja a kért lehetőséget." msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid repository name." msgid "Invalid directory name." msgstr "Érvénytelen tárolónév." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Letöltési könyvtár" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Letöltési könyvtár" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Megosztott" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6082,10 +6109,6 @@ msgstr "" "kezeli a Bitorrent fájlmegosztást. Vedd figyelembe, hogy a BitTorrent nem " "biztosít névtelenséget." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Letöltési könyvtár" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6440,11 +6463,388 @@ msgstr "Jelszómódosítás" msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Érvénytelen kite név" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Kulcs közzététele" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Kulcs közzétéve a kulcskiszolgálónak." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Chat szerver" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Kapcsolat létrehozása" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Jelenleg nincs beállított megosztás." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Új bevezető hozzáadása" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Chat kliens" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Sikertelen a hitelesítés a távoli kiszolgálóra." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Új bevezető hozzáadása" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Kapcsolat hozzáadása" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC kliens" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Biztosan el szeretnéd távolítani ezt a tárolót?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Biztosan el szeretnéd távolítani ezt a tárolót?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Chat kliens" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Kapcsolat létrehozása" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Kiszolgáló domain" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Válaszd ki az ellenőrzött SSH nyilvános kulcsot" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Kiszolgáló domain" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Új bevezető hozzáadása" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Egy megosztás ezzel a névvel már létezik." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-mail kliens" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Beállítások frissítése" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-mail kliens" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archívum törölve." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Tároló nem található" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Egyedi szolgáltatás hozzáadva" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Kapcsolat típusa" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Beállítások frissítése" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Kapcsolat szerkesztése" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Kapcsolat törlése" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Megosztás törölve." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Általános" @@ -6794,6 +7194,108 @@ msgstr "Alkalmazás letiltva" msgid "Gujarati" msgstr "Gudzsaráti" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP szerver" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "A repro különféle SIP szolgáltatásokat nyújt, amelyeket egy SIP softphone " +#~ "képes felhasználni audió– és videóhívásokra, valamint jelenlét és " +#~ "azonnali üzenetküldés céljára. A repro biztosítja a kiszolgálót és a SIP " +#~ "felhasználói fiókokat, melyeket a kliensek felhasználhatnak a jelenlétük " +#~ "ismertté tételéhez. Továbbá proxy-ként is viselkedik, hogy összekapcsolja " +#~ "a SIP kommunikációt az Interneten lévő többi kiszolgálóval, hasonlóképpen " +#~ "az e-mailhez." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "A SIP hívások kezdeményezéséhez egy kliens alkalmazásra is szükség lesz. " +#~ "Néhány kliens: Jitsi (számítógépekre) " +#~ "és CSipSimple (Android telefonokra)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Megjegyzés: Mielőtt használnád a repro-t, a domain-eket " +#~ "és a felhasználókat be kell állítani a webes beállítási panelen. Az admin csoport felhasználói " +#~ "be tudnak majd jelentkezni a repro beállítási paneljére. A domain " +#~ "beállítása után a repro szolgáltatás újraindítása szükséges. Tiltsd le a " +#~ "szolgáltatást, majd engedélyezd újra azt." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "A Jitsi egy sor nyílt-forráskódú projekt, amely lehetővé teszi " +#~ "biztonságos videokonferencia megoldások könnyű felépítését és " +#~ "telepítését. A Jitsi fő elemei a Jitsi Videobridge és a Jitsi Meet, " +#~ "amelyek lehetővé teszik, hogy konferenciát tarts az interneten, amíg az " +#~ "egyéb közösségi projektek olyan képességeket adnak hozzá, mint hang, " +#~ "betárcsázás, felvétel és párhuzamos közvetítés." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Nem hosztolt adattároló" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore a kiszolgálója az unhosted " +#~ "(nem hosztolt) webes alkalmazásoknak. Az elképzelés az, hogy " +#~ "szétválasztják a webes alkalmazást az adatoktól. Nem számít honnan kerül " +#~ "kiszolgálásra a webes alkalmazás, az adat tárolható a felhasználó által " +#~ "választott nem hosztolt adattároló szerveren. A reStore-al, a Te " +#~ "{box_name} eszközöd lesz az a nem hosztolt adattároló szerver." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Létrehozhatsz ill. módosíthatsz felhasználói fiókokat a reStore webes felületén." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index ba649bd9e..d3713655a 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1638,35 +1647,35 @@ msgstr "" msgid "Delete %(name)s" msgstr "Hapus %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Actions" msgid "Edit repository" msgstr "Aksi" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} dihapus." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" @@ -1675,8 +1684,8 @@ msgstr "Tidak dapat menghapus {name}: {error}" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Panduan" @@ -2270,6 +2279,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Hapus" @@ -2588,7 +2601,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Address" @@ -2933,68 +2946,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Jaringan" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gunakan DNSSEC pada IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Tipe Koneksi" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Nama Koneksi" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Interface Fisik" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3002,183 +3015,218 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Shared" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 #, fuzzy msgid "Second DNS Server" msgstr "Second DNS Server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatic" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 #, fuzzy #| msgid "Automatic" msgid "Automatic, DHCP only" msgstr "Automatic" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- pilih --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frequency Band" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 #, fuzzy msgid "Channel" msgstr "Channel" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Authentication Mode" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Open" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Pengaturan Jaringan saat ini" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 #, fuzzy msgid "Network Connections" @@ -3230,14 +3278,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Jaringan Wi-Fi terdekat" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Tambah Koneksi" @@ -3272,22 +3321,30 @@ msgstr "" msgid "Delete Connection" msgstr "Hapus Koneksi" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "System Configuration" +msgid "Router configuration type saved." +msgstr "Pengaturan Sistem" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Sunting Koneksi" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Sunting" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3400,7 +3457,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3466,13 +3523,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3490,29 +3547,113 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Koneksi" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update URL" +msgid "Update..." +msgstr "Perbaharui URL" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "Setup %(box_name)s Behind a Router" +msgstr "Pengaturan %(box_name)s" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "Open" @@ -3520,6 +3661,7 @@ msgid "OpenVPN" msgstr "Open" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4070,84 +4212,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "DNS Server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4233,7 +4297,7 @@ msgstr "Shared" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4249,7 +4313,7 @@ msgid "Used" msgstr "Digunakan" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4266,7 +4330,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4294,13 +4358,13 @@ msgstr "Shared" msgid "Action" msgstr "Aksi" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tambah Layanan" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5062,43 +5126,43 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Actions" msgid "Invalid directory name." msgstr "Aksi" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Shared" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5450,10 +5514,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5776,11 +5836,358 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Actions" +msgid "Invalid key." +msgstr "Aksi" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Publikasikan Kunci" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Publikasikan kunci ke keyserver." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Server Web" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Tambah Koneksi" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Update URL" +msgid "Update Client" +msgstr "Perbaharui URL" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Edit Connection" +msgid "Update Connection" +msgstr "Sunting Koneksi" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "SSH Fingerprint" +msgid "Server endpoints:" +msgstr "Sidik Jari SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "SSH Fingerprint" +msgid "Server endpoint:" +msgstr "Sidik Jari SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update URL" +msgid "Updated client." +msgstr "Perbaharui URL" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "Hapus" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "{name} deleted." +msgid "Client deleted." +msgstr "{name} dihapus." + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Tipe Koneksi" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Web Server" +msgid "Updated server." +msgstr "Server Web" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Sunting Koneksi" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Hapus Koneksi" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} dihapus." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6113,6 +6520,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "DNS Server" + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -6186,11 +6598,6 @@ msgstr "" #~ msgid "Upload" #~ msgstr "Unduh profil saya" -#, fuzzy -#~| msgid "Update URL" -#~ msgid "Update config" -#~ msgstr "Perbaharui URL" - #~ msgid "Current status:" #~ msgstr "Status saat ini:" @@ -6220,11 +6627,6 @@ msgstr "" #~ msgid "Removable Devices" #~ msgstr "Nama Layanan" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "Hapus" - #, fuzzy #~| msgid "Disks" #~ msgid "Disk" @@ -6272,11 +6674,6 @@ msgstr "" #~ msgid "Enable DNSSEC configuration updated" #~ msgstr "Konfigurasi Umum" -#, fuzzy -#~| msgid "System Configuration" -#~ msgid "DNS server configuration updated" -#~ msgstr "Pengaturan Sistem" - #~ msgid "wiki" #~ msgstr "wiki" @@ -6296,8 +6693,5 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "Pergi ke Pengaturan Aplikasi" -#~ msgid "Current Network Configuration" -#~ msgstr "Pengaturan Jaringan saat ini" - #~ msgid "Apply changes" #~ msgstr "Terapkan perubahan" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 59aed558a..a04e844da 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1800,37 +1809,37 @@ msgstr "Rimuovere l'archivio in modo definitivo?" msgid "Delete %(name)s" msgstr "Cancella %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "Crea Connessione" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} cancellato." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" @@ -1839,8 +1848,8 @@ msgstr "Non è stato possibile cancellare {name}: {error}" msgid "Documentation" msgstr "Documentazione" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuale" @@ -2487,6 +2496,10 @@ msgstr "Riottieni" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Cancella" @@ -2852,7 +2865,7 @@ msgstr "" "danno." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Indirizzo" @@ -3209,49 +3222,49 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Reti" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilizzo DNSSEC su IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Tipo Connessione" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Nome Connessione" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Interfaccia Fisica" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" "Il dispositivo di rete a cui dovrebbe essere legata questa connessione." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3259,21 +3272,21 @@ msgstr "" "La firewall zone controlla quali servizi sono disponibili su questa " "interfaccia. Selezione Interna solo per le reti fidate." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Esterna" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Metodo d'indirizzamento IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3284,19 +3297,19 @@ msgstr "" "come client. Col metodo \"Condiviso\" {box_name} agisce come router, " "configura i client nella sua rete e condivide la sua connessione Internet." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatico (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Condiviso" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3304,21 +3317,21 @@ msgstr "" "Valore opzionale. Le lasciato vuoto, sarà usato un valore predefinito basato " "sull'indirizzo IP." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Valore opzionale." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3327,11 +3340,11 @@ msgstr "" "indirizzamento è \"Automatico\", i server DNS assegnati dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Server DNS secondario" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3339,11 +3352,11 @@ msgstr "" "Valore opzionale. Se viene assegnato un valore e il metodo d'indirizzamento " "è \"Automatico\", i server DNS assegnati dal server DHCP saranno ignorati." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Metodo Indirizzamento IPv6" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3352,27 +3365,27 @@ msgstr "" "Con la modalità \"Automatica\" il {box_name} otterrà la configurazione di " "rete come client." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatica" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatica, solo DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignora" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Prefisso" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Valore compreso tra 1 e 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3381,7 +3394,7 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3390,54 +3403,54 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- seleziona--" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Il nome visibile sella rete." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modalità" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastruttura" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Banda di frequenza" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canale" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3446,11 +3459,11 @@ msgstr "" "selezionata. Il valore 0, o l'assenza di valore, significa che sarà " "impostata la selezione automatica." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3460,11 +3473,11 @@ msgstr "" "connessione ad un access point, connettersi solo se il BSSID dell'access " "point combacia con quello fornito. Per esempio: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Modalità Autenticazione" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3472,14 +3485,49 @@ msgstr "" "Scegli WPA se la rete wireless è protetta e richiede che i client abbiano la " "password WiFi." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Aperta" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "General Configuration" +msgid "Preferred router configuration" +msgstr "Configurazione Generale" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Connessione di rete" @@ -3532,14 +3580,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Disattivazione connessione fallita: connessione non trovata." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Reti WiFi vicine" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Aggiungi Connessione" @@ -3574,22 +3623,30 @@ msgstr "Cancellazione connessione fallita: connessione non trovata." msgid "Delete Connection" msgstr "Cancella Connessione" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "PVP configuration updated" +msgid "Router configuration type saved." +msgstr "Configurazione PVP aggiornata" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Modifica Connessione" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Modifica" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Disattiva" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Attiva" @@ -3701,7 +3758,7 @@ msgstr "Server DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Default" @@ -3778,13 +3835,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3802,34 +3859,119 @@ msgstr "Mostra connessione %(name)s" msgid "Computer" msgstr "Computer" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Connessione" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Cancella connessione %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Attiva" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inattiva" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Create..." +msgid "Update..." +msgstr "Crea..." + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Crea..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s è aggiornato." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtual Private Network" @@ -4487,82 +4629,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4648,7 +4714,7 @@ msgstr "Condiviso" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4664,7 +4730,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4681,7 +4747,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4709,13 +4775,13 @@ msgstr "Nome Kite" msgid "Action" msgstr "Azioni" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Shared" msgid "Open Share" msgstr "Condiviso" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -5431,42 +5497,42 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy msgid "Invalid directory name." msgstr "Hostname non valido" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Condiviso" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5812,10 +5878,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6133,11 +6195,368 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Nome Kite invalido" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Importa chiave" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Chiave pubblicata nel keyserver." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Server Chat" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Crea Connessione" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Client" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Aggiungi Connessione" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "Client IRC" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Client" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Crea Connessione" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Dominio server" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Dominio server" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "This service already exists" +msgid "Client with public key already exists" +msgstr "Questo servizio è già presente" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Aggiorna impostazioni" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "IRC Client" +msgid "Modify Client" +msgstr "Client IRC" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archivio cancellato." + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Servizio personalizzato aggiunto" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Tipo Connessione" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Aggiorna impostazioni" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Modifica Concessione" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Cancella Connessione" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Archive deleted." +msgid "Server deleted." +msgstr "Archivio cancellato." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6458,6 +6877,15 @@ msgstr "Applicazione disabilitata" msgid "Gujarati" msgstr "" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + #~ msgid "Module: %(module)s" #~ msgstr "Modulo: %(module)s" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index fa9ee39e5..06b6fa8c9 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -342,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -368,6 +368,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -588,8 +589,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -880,6 +882,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1108,16 +1114,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1204,7 +1210,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1367,7 +1376,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1459,7 +1468,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1553,33 +1562,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1588,8 +1597,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2153,6 +2162,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2447,7 +2460,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2782,68 +2795,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2851,179 +2864,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3074,14 +3120,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3116,22 +3163,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3242,7 +3295,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3308,13 +3361,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3332,32 +3385,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3898,82 +4033,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4057,7 +4116,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4071,7 +4130,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4088,7 +4147,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4110,11 +4169,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4807,39 +4866,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5181,10 +5240,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5497,11 +5552,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index fa9ee39e5..06b6fa8c9 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -342,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -368,6 +368,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -588,8 +589,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -880,6 +882,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1108,16 +1114,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1204,7 +1210,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1367,7 +1376,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1459,7 +1468,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1553,33 +1562,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1588,8 +1597,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2153,6 +2162,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2447,7 +2460,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2782,68 +2795,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2851,179 +2864,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3074,14 +3120,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3116,22 +3163,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3242,7 +3295,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3308,13 +3361,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3332,32 +3385,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3898,82 +4033,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4057,7 +4116,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4071,7 +4130,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4088,7 +4147,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4110,11 +4169,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4807,39 +4866,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5181,10 +5240,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5497,11 +5552,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index d6c8087ad..dd2b139f9 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -198,7 +198,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -343,7 +343,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -369,6 +369,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -589,8 +590,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -881,6 +883,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1109,16 +1115,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1205,7 +1211,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1368,7 +1377,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1460,7 +1469,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1554,33 +1563,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1589,8 +1598,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2154,6 +2163,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2448,7 +2461,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2783,68 +2796,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2852,179 +2865,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3075,14 +3121,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3117,22 +3164,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3243,7 +3296,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3309,13 +3362,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3333,32 +3386,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3899,82 +4034,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4058,7 +4117,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4072,7 +4131,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4089,7 +4148,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4111,11 +4170,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4808,39 +4867,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5182,10 +5241,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5498,11 +5553,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index d46477ee2..33e7a21fe 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål Git-veiledningen." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 #, fuzzy msgid "Read-write access to Git repositories" msgstr "Lese- og skrivetilgang til Git-kodelagre" @@ -1833,41 +1842,41 @@ msgstr "Slett dette øyeblikksbildet permanent?" msgid "Delete %(name)s" msgstr "Slette %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Opprett depot" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "Slettet {name}." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" @@ -1876,8 +1885,8 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "Documentation" msgstr "Dokumentasjon" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -2566,6 +2575,10 @@ msgstr "Gjeninnhente" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Slett" @@ -2931,7 +2944,7 @@ msgstr "" "Når den ikke er aktiv, kan ikke spillere dø eller ta skade av noe slag." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adresse" @@ -3312,11 +3325,11 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle nettprogrammer" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Nettverk" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 #, fuzzy msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3325,7 +3338,7 @@ msgstr "" "Sett opp nettverksenheter. Sett opp Internett via Ethernet, Wi-Fi eller " "PPPoE. Del den tilkoblingen med andre enheter på nettverket." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3333,32 +3346,32 @@ msgstr "" "Enheter administrert gjennom andre metoder kan være utilgjengelige for " "oppsett her." -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruker DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Oppkoblingstype" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Oppkoblingsnavn" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fysisk grensesnitt" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Nettverksenheten som denne forbindelsen bør være bundet til." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Brannmursone" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3366,21 +3379,21 @@ msgstr "" "Brannmuren vil kontrollere hvilke tjenester som er tilgjengelig over dette " "grensesnitt. Velg Internal (Internt) bare for klarerte nettverk." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Eksternt" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 adresseringsmetode" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3392,19 +3405,19 @@ msgstr "" "å oppføre seg som en router, sette opp klienter på dette nettverket og dele " "sin Internett-forbindelse." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Delt" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Nettmaske" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3412,21 +3425,21 @@ msgstr "" "Valgfri verdi. Om det står tomt, vil en standard nettmaske, basert på " "adressen, bli brukt." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Inngangsport" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Valgfri verdi." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-tjener" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3434,11 +3447,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Andre DNS-tjener" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3446,11 +3459,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6-adresseringsmetode" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3459,27 +3472,27 @@ msgstr "" "«Automatiske» metoder vil få {box_name} til å hente oppsettet fra dette " "nettverket og gjøre den til en klient." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatisk, kun DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Overse" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Forstavelse" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Verdi mellom 1 og 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3487,7 +3500,7 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3495,54 +3508,54 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- velg --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID (Service Set Identifier)" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Det synlige navnet på nettverket." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Aksesspunkt" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frekvensbånd" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3550,11 +3563,11 @@ msgstr "" "Valgfri verdi. Trådløskanal i det valgte frekvensbåndet som det skal " "begrenses til. Blank eller verdi 0 betyr at det skal velges automatisk." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3564,11 +3577,11 @@ msgstr "" "aksesspunkt, koble kun til hvis BSSID-en til aksesspunktet stemmer med det " "som er oppgitt. Eksempel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Autentiseringsmodus" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3576,14 +3589,49 @@ msgstr "" "Velg WPA (Wi-Fi Protected Access) hvis det trådløse nettverket er sikret og " "krever at brukerne har passordet som trengs for å koble seg til." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Åpen" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Nåværende nettverksoppsett" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Nettverksoppkoblinger" @@ -3636,14 +3684,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Kunne ikke deaktivere tilkobling: Tilkobling ikke funnet." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nettverk i nærheten" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Legg til tilkobling" @@ -3678,22 +3727,30 @@ msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet." msgid "Delete Connection" msgstr "Slett tilkobling" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor-oppsettet oppdateres" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Rediger tilkobling" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Rediger" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Deaktivere" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Aktiver" @@ -3804,7 +3861,7 @@ msgstr "DNS-tjener" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Forvalg" @@ -3882,13 +3939,13 @@ msgstr "Lage mellomrom" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3906,34 +3963,119 @@ msgstr "Vis forbindelse %(name)s" msgid "Computer" msgstr "Datamaskin" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Tilkobling" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Slett forbindelse %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktiv" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Slått av (inaktiv)" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Oppdater" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Lage ..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s er oppdatert." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtuelt privat nettverk" @@ -4599,116 +4741,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Tilgangskontrolloppsett oppdatert" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP-tjener" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"Repro gir ulike SIP-tjenester som en SIP-softphone kan bruke for å gi lyd- " -"og videosamtaler, tilstedeværelse og direktemeldinger. Repro gir en server " -"og SIP-brukerkontoer som klientene kan bruke til å vise sin tilstedeværelse. " -"Den fungerer også som en mellomtjener for å forene SIP-kommunikasjon til " -"andre servere på Internett på samme måte som e-post." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Til SIP-samtaler trengs et klientprogram. Tilgjengelige klienter omfatter Jitsi (for datamaskiner) og CSipSimple (for Android telefoner)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Merk: Før du bruker repro, må domener og brukere settes opp " -"ved hjelp av det nettbaserte oppsettpanelet. Brukere i admin-gruppen kan logge seg inn i repros " -"oppsettpanel. Etter innstillingen av domenet, er det nødvendig å starte " -"repro-tjenesten på nytt. Deaktiver tjenesten og reaktiver den." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi er et knippe frie prosjekter, som tillater deg å bygge og rulle ut " -"sikre videokonferanseløsninger. I hjertet av Jitsi er videobroen og Jitsi " -"Meet, som lar deg ha konferanser på Internett, mens andre prosjekter i " -"gemenskapen tillater andre funksjoner som lyd, innringing, opptak og bred " -"kringkasting." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Vertsløs lagring" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore er en tjener for unhosted " -"nettprogrammer. Ideen er å frikoble nettprogrammer fra data. Uansett hvor et " -"nettprogram betjenes fra, kan dataene lagres på en vertsfri lagringsserver " -"som brukeren selv velger. Med reStore blir {box_name} din vertsfrie " -"lagringstjener." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Du kan lage og redigere kontoer i reStore vev-" -"grensesnitt." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4816,7 +4848,7 @@ msgstr "Delt" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4832,7 +4864,9 @@ msgid "Used" msgstr "Brukt" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "VFAT-partisjoner støttes ikke" #: plinth/modules/samba/templates/samba.html:103 @@ -4849,7 +4883,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4877,13 +4911,13 @@ msgstr "Deling lagt til." msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Legg til deling" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5689,49 +5723,49 @@ msgstr "Mangler rettigheter til bruk av forespurt valg." msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Ugyldig vertsnavn" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "Mappen finnes ikke." -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Last ned katalog" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "Mappen kan ikke skrives til av brukeren." -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Last ned katalog" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "Undermappe (valgfritt)" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Delt" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "Annen mappe (angi nedenfor)" @@ -6143,10 +6177,6 @@ msgstr "" "(overføringsdemon) håndterer BitTorrent-fildeling i bakgrunnen. Merk at " "BitTorrent ikke er anonym." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Last ned katalog" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6502,11 +6532,392 @@ msgstr "Endre passord" msgid "Password changed successfully." msgstr "Vellykket passordbytte." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Ugyldig «kite»-navn" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Legge ut nøkkel" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Publisert nøkkel til nøkkeltjener." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "En liste med IP-adresser, oppdelt med mellomrom" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Nettprat-tjener" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Lage forbindelse" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Ingen delte områder er satt opp foreløpig." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Legg til en ny introduserer" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Nettpratklient" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Identitetsbekreftelse til fjerntjener mislyktes." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Legg til en ny introduserer" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Legg til tilkobling" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC-klient" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Er du sikker på at du ønsker å fjerne dette depotet?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Er du sikker på at du ønsker å fjerne dette depotet?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Nettpratklient" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Lage forbindelse" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Tjenerdomene" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Velg bekreftet offentlig SSH-nøkkel" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Tjenerdomene" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Legg til en ny introduserer" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "En deling ved dette navnet finnes allerede." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-postklient" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Oppdater oppsett" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-postklient" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Slett alle" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Arkiv slettet." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Finner ikke depot" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Lagt til selvvalgt tjeneste" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Oppkoblingstype" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Oppdater oppsett" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Endre oppkobling" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Slett tilkobling" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Deling slettet." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Generisk" @@ -6854,6 +7265,103 @@ msgstr "Programmet er deaktivert" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP-tjener" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "Repro gir ulike SIP-tjenester som en SIP-softphone kan bruke for å gi " +#~ "lyd- og videosamtaler, tilstedeværelse og direktemeldinger. Repro gir en " +#~ "server og SIP-brukerkontoer som klientene kan bruke til å vise sin " +#~ "tilstedeværelse. Den fungerer også som en mellomtjener for å forene SIP-" +#~ "kommunikasjon til andre servere på Internett på samme måte som e-post." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Til SIP-samtaler trengs et klientprogram. Tilgjengelige klienter omfatter " +#~ "Jitsi (for datamaskiner) og " +#~ "CSipSimple (for Android telefoner)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Merk: Før du bruker repro, må domener og brukere settes " +#~ "opp ved hjelp av det nettbaserte " +#~ "oppsettpanelet. Brukere i admin-gruppen kan logge seg inn i " +#~ "repros oppsettpanel. Etter innstillingen av domenet, er det nødvendig å " +#~ "starte repro-tjenesten på nytt. Deaktiver tjenesten og reaktiver den." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi er et knippe frie prosjekter, som tillater deg å bygge og rulle ut " +#~ "sikre videokonferanseløsninger. I hjertet av Jitsi er videobroen og Jitsi " +#~ "Meet, som lar deg ha konferanser på Internett, mens andre prosjekter i " +#~ "gemenskapen tillater andre funksjoner som lyd, innringing, opptak og bred " +#~ "kringkasting." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Vertsløs lagring" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore er en tjener for unhosted " +#~ "nettprogrammer. Ideen er å frikoble nettprogrammer fra data. Uansett hvor " +#~ "et nettprogram betjenes fra, kan dataene lagres på en vertsfri " +#~ "lagringsserver som brukeren selv velger. Med reStore blir {box_name} din " +#~ "vertsfrie lagringstjener." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Du kan lage og redigere kontoer i reStore vev-" +#~ "grensesnitt." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -7269,9 +7777,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Slett øyeblikksbilde #%(number)s" -#~ msgid "Delete All" -#~ msgstr "Slett alle" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Slett øyeblikksbilde %(number)s" @@ -7497,9 +8002,6 @@ msgstr "Gujarati" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Aktiver videresending i din BIND-tjener" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "En liste med IP-adresser, oppdelt med mellomrom" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Sett videresendingsoppsett oppdatert" @@ -7595,9 +8097,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Gå til applikasjoner" -#~ msgid "Current Network Configuration" -#~ msgstr "Nåværende nettverksoppsett" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 0631da883..4baacc97b 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-30 20:43-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-17 21:21+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch any user on {box_name} " "belonging to the admin group." msgstr "" -"Het kan geraadpleegd worden door iedere gebruiker" -" op {box_name} die lid is van de systeembeheerdergroep (admin)." +"Het kan geraadpleegd worden door iedere gebruiker op {box_name} die lid is van de systeembeheerdergroep (admin)." #: plinth/modules/cockpit/__init__.py:63 msgid "" @@ -948,6 +950,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "Download bestanden met BitTorrent toepassingen" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "Opslagmap" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-client geschreven in Python/PyGTK" @@ -1216,16 +1222,16 @@ msgstr "Accepteer alle SSL certificaten" msgid "Use HTTP basic authentication" msgstr "Gebruik HTTP-basisverificatie" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "Gebruikersnaam" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Wachtwoord" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "Toon wachtwoord" @@ -1329,7 +1335,10 @@ msgstr "Over" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "Status" @@ -1520,7 +1529,7 @@ msgstr "Ingeschakeld" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "Uitgeschakeld" @@ -1623,7 +1632,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1724,41 +1733,41 @@ msgstr "Deze Snapshot permanent verwijderen?" msgid "Delete %(name)s" msgstr "%(name)s verwijderen" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Maak Repository" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} verwijderd." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" @@ -1767,8 +1776,8 @@ msgstr "Verwijderen van {name} mislukt: {error}" msgid "Documentation" msgstr "Documentatie" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handleiding" @@ -2420,6 +2429,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Verwijder" @@ -2782,7 +2795,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Indien uitgeschakeld, kunnen spelers niet sterven of schade oplopen." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adres" @@ -3150,48 +3163,48 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle webapps" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Netwerken" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gebruikt DNSSEC op IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Verbindingssoort" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Verbindingsnaam" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fysieke Interface" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "De netwerkapparatuur waar deze verbinding mee moet worden verbonden." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3199,21 +3212,21 @@ msgstr "" "De firewall zone controleert welke machines beschikbaar zijn via deze " "verbinding. Selecteer \"Allen Intern\" voor vertrouwde netwerken." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmethode" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3225,19 +3238,19 @@ msgstr "" "ervoor dat {box_name} fungeert als een router, die het configureren van " "clients op dit netwerk regelt en de Internet-verbinding deelt." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Gedeeld" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3245,21 +3258,21 @@ msgstr "" "Optionele waarde. Indien leeg, zal een standaard netmask op basis van het " "adres worden gebruikt." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Optionele waarde." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3268,11 +3281,11 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Tweede DNS Server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3281,11 +3294,11 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6 Adresseringsmethode" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3294,27 +3307,27 @@ msgstr "" "De \"Automatische\" methoden zorgen dat {box_name} de configuratie van dit " "netwerk gebruikt waardoor het een client wordt." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatisch, alleen DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Negeren" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Voorvoegsel" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Waarde tussen 1 en 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3323,7 +3336,7 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3332,54 +3345,54 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- selecteer --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "De zichtbare netwerknaam." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastructuur" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frequentieband" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanaal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3387,11 +3400,11 @@ msgstr "" "Optionele waarde. Beperken van draadloos kanaal tot de geselecteerde " "frequentieband. Waarde leeg of 0 betekent automatische selectie." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3402,11 +3415,11 @@ msgstr "" "toegangspunt overeenkomt met degene die hier wordt ingevuld. Voorbeeld: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Authentificatiemodus" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3414,14 +3427,49 @@ msgstr "" "Selecteer WPA indien het netwerk beveiligd is en gebruikerswachtwoorden " "gebruikt om te verbinden." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Open" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Huidige Netwerkconfiguratie" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Netwerkverbindingen" @@ -3472,14 +3520,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Kan verbinding niet uitschakelen: Verbinding niet gevonden." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi Netwerken dichtbij" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Verbinding toevoegen" @@ -3514,22 +3563,30 @@ msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden." msgid "Delete Connection" msgstr "Verwijder verbinding" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor configuratie wordt bijgewerkt" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Wijzig verbinding" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Wijzig" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Deactiveer" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Activeer" @@ -3640,7 +3697,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Standaard" @@ -3717,13 +3774,13 @@ msgstr "Verbinding" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3741,32 +3798,117 @@ msgstr "Tonen verbinding %(name)s" msgid "Computer" msgstr "Computer" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Verbindingen" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Verwijder verbinding %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktief" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inactief" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Update" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Maak..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "De nieuwste versie van %(box_name)s is geïnstalleerd." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "Volgende" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtual Private Network" @@ -4429,117 +4571,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuratie van de toegangsrechten is bijgewerkt" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP Server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro biedt verschillende SIP-services die een SIP softphone kan gebruiken " -"om audio- en video-oproepen en chat gesprekken mogelijk te maken. repro " -"biedt een server met SIP-gebruikersaccounts die clients kunnen gebruiken om " -"hun aanwezigheid bekend te maken. Het fungeert ook als een proxy om SIP " -"communicatie naar andere servers op het Internet te verdelen op een manier " -"die vergelijkbaar is met e-mail." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Als u wilt SIP-bellen, is een clienttoepassing nodig. Beschikbare cliënten " -"zijn bijvoorbeeld Jitsi (voor computers) " -"en " -"CSipSimple (voor Android-telefoons)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Opmerking: Voordat u repro kunt gebruiken, zullen domeinen " -"en gebruikers moeten worden geconfigureerd via het web gebaseerde configuratiescherm. Alleen gebruikers in de " -"admin groep kunnen inloggen op het repro configuratiescherm. Na het " -"instellen van het domein, is het nodig de repro-service opnieuw te starten. " -"Hiervoor moet de service uitgeschakeld en weer ingeschakeld worden." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi is een verzameling open-source applicaties die het gemakkelijk maken " -"om beveiligde videovergaderingen op te zetten. De kern van Jitsi bestaat uit " -"Jitsi Videobridge en Jitsi Meet. Verdere toevoegingen maken alleen-audio, " -"lokaal inbellen, opnemen en simulcasting mogelijk." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Unhosted dataopslag" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore is een server voor unhosted web " -"applicaties. Het idee is om webapplicaties en data te scheiden. Het maakt " -"niet uit waar de webdienst vandaan komt, de data kan worden bewaard een " -"unhosted storage server naar keuze van de gebruiker worden geplaatst. Met " -"reStore kan {box_name} een unhosted storage server worden." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Gebruikersaccounts kunnen worden aangemaakt en bewerkt met de reStore web-interface." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4647,7 +4678,7 @@ msgstr "Gedeeld" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4663,7 +4694,7 @@ msgid "Used" msgstr "Gebruikt" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4680,7 +4711,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4708,13 +4739,13 @@ msgstr "Gedeelde map toegevoegd." msgid "Action" msgstr "Acties" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Gedeelde map toevoegen" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5487,47 +5518,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Foutieve hostnaam" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Opslagmap" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Opslagmap" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Gedeeld" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5948,10 +5979,6 @@ msgstr "" "daemon voorziet in Bittorrent bestandsdelingdiensten. Houd in gedachten dat " "BitTorrent gebruik niet anoniem is." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Opslagmap" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6306,11 +6333,390 @@ msgstr "Wijzig wachtwoord" msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Foute kite-naam" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Sleutel Publiceren" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Sleutel gepubliceerd op keyserver." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Een lijst met IP-adressen, gescheiden door spatie" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Chatserver" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Maak Verbinding" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Er zijn momenteel geen bestandsdelingen geconfigureerd." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Nieuwe introduceerder toevoegen" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Chat Cliënt" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Nieuwe introduceerder toevoegen" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Verbinding toevoegen" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC Cliënt" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Weet u zeker dat u deze repository wilt verwijderen?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Weet u zeker dat u deze repository wilt verwijderen?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Chat Cliënt" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Maak Verbinding" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Serverdomein" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Selecteer geverifieerde SSH openbare sleutel" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Serverdomein" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Nieuwe introduceerder toevoegen" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Er bestaat reeds een gedeelde map met deze naam." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "Email Cliënt" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Instelling bijwerken" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "Email Cliënt" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Verwijder alles" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archief verwijderd." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Repository niet gevonden" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Aangepaste dienst toevoegen" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Verbindingssoort" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Instelling bijwerken" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Wijzig verbinding" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Verwijder verbinding" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Gedeelde map verwijderd." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Generiek" @@ -6657,6 +7063,105 @@ msgstr "Toepassing uitgeschakeld" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP Server" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro biedt verschillende SIP-services die een SIP softphone kan " +#~ "gebruiken om audio- en video-oproepen en chat gesprekken mogelijk te " +#~ "maken. repro biedt een server met SIP-gebruikersaccounts die clients " +#~ "kunnen gebruiken om hun aanwezigheid bekend te maken. Het fungeert ook " +#~ "als een proxy om SIP communicatie naar andere servers op het Internet te " +#~ "verdelen op een manier die vergelijkbaar is met e-mail." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Als u wilt SIP-bellen, is een clienttoepassing nodig. Beschikbare " +#~ "cliënten zijn bijvoorbeeld Jitsi " +#~ "(voor computers) en CSipSimple (voor Android-telefoons)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Opmerking: Voordat u repro kunt gebruiken, zullen " +#~ "domeinen en gebruikers moeten worden geconfigureerd via het web gebaseerde configuratiescherm. Alleen " +#~ "gebruikers in de admin groep kunnen inloggen op het repro " +#~ "configuratiescherm. Na het instellen van het domein, is het nodig de " +#~ "repro-service opnieuw te starten. Hiervoor moet de service uitgeschakeld " +#~ "en weer ingeschakeld worden." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi is een verzameling open-source applicaties die het gemakkelijk " +#~ "maken om beveiligde videovergaderingen op te zetten. De kern van Jitsi " +#~ "bestaat uit Jitsi Videobridge en Jitsi Meet. Verdere toevoegingen maken " +#~ "alleen-audio, lokaal inbellen, opnemen en simulcasting mogelijk." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Unhosted dataopslag" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore is een server voor unhosted " +#~ "web applicaties. Het idee is om webapplicaties en data te scheiden. Het " +#~ "maakt niet uit waar de webdienst vandaan komt, de data kan worden bewaard " +#~ "een unhosted storage server naar keuze van de gebruiker worden geplaatst. " +#~ "Met reStore kan {box_name} een unhosted storage server worden." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Gebruikersaccounts kunnen worden aangemaakt en bewerkt met de reStore web-interface." + #~ msgid "Module: %(module)s" #~ msgstr "Module: %(module)s" @@ -7146,9 +7651,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Snapshot #%(number)s verwijderen" -#~ msgid "Delete All" -#~ msgstr "Verwijder alles" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Snapshot #%(number)s verwijderen" @@ -7355,9 +7857,6 @@ msgstr "Gujarati" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Doorsturen op uw BIND-server inschakelen" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Een lijst met IP-adressen, gescheiden door spatie" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Instellen forwarding configuratie bijgewerkt" @@ -7475,9 +7974,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Ga naar Apps" -#~ msgid "Current Network Configuration" -#~ msgstr "Huidige Netwerkconfiguratie" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7748,9 +8244,6 @@ msgstr "Gujarati" #~ msgstr "" #~ "Beantwoord de volgende vragen om het installatieproces te voltooien." -#~ msgid "Next" -#~ msgstr "Volgende" - #~ msgid "" #~ "Many FreedomBox contributors and users are also available on the " #~ "#freedombox channel of the irc.oftc.net IRC network." diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 0b05ce7cc..221d9f629 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2019-11-18 18:04+0000\n" "Last-Translator: Radek Pasiok \n" "Language-Team: Polish Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1771,39 +1780,39 @@ msgstr "Usunąć trwale to archiwum?" msgid "Delete %(name)s" msgstr "Usuń %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1812,8 +1821,8 @@ msgstr "" msgid "Documentation" msgstr "Dokumentacja" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Instrukcja" @@ -2413,6 +2422,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Usuń" @@ -2731,7 +2744,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -3068,68 +3081,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3137,179 +3150,214 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Maska sieci" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Aktualna konfiguracja sieci" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3360,14 +3408,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3402,22 +3451,30 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "PVP configuration updated" +msgid "Router configuration type saved." +msgstr "Zaktualizowano ustawienia PVP" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3528,7 +3585,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3594,13 +3651,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3618,34 +3675,119 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection refused" msgid "Connections" msgstr "Odmowa dostępu" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update URL" +msgid "Update..." +msgstr "Uaktualnij URL" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "Plinth is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "Plinth jest aktualny." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4200,82 +4342,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4361,7 +4427,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4377,7 +4443,7 @@ msgid "Used" msgstr "W użyciu" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4394,7 +4460,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4418,11 +4484,11 @@ msgstr "" msgid "Action" msgstr "Akcje" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -5154,41 +5220,41 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5542,10 +5608,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5876,11 +5938,378 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid key." +msgstr "Niewłaściwa nazwa hosta" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Lista adresów IP rozdzielonych spacją" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Serwer czatu" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Klient czatu" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Connection refused" +msgid "Add Connection to Server" +msgstr "Odmowa dostępu" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Add Client" +msgstr "Klient czatu" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Naprawdę chcesz usunąć to repozytorium?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Naprawdę chcesz usunąć to repozytorium?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Klient czatu" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Connection refused" +msgid "Update Connection" +msgstr "Odmowa dostępu" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Administrator Account" +msgid "Server endpoints:" +msgstr "Konto Administratora" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Wybierz zweryfikowany klucz publiczny SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Administrator Account" +msgid "Server endpoint:" +msgstr "Konto Administratora" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "Remote backup repository already exists." +msgid "Client with public key already exists" +msgstr "Zdalne repozytorium już istnieje." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Dynamic DNS Client" +msgid "Allowed Client" +msgstr "Klient Dynamic DNS" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Aktualizuj ustawienia" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Dynamic DNS Client" +msgid "Modify Client" +msgstr "Klient Dynamic DNS" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "Usuń" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archiwum zostało usunięte." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Nie odnaleziono repozytorium" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added new remote SSH repository." +msgid "Added new server." +msgstr "Dodano nowe zdalne repozytorium SSH." + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection refused" +msgid "Connection to Server" +msgstr "Odmowa dostępu" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Aktualizuj ustawienia" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Error establishing connection to server: {}" +msgid "Modify Connection to Server" +msgstr "Błąd podczas ustanawiania połączenia z serwerem: {error}" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Direct connection to the Internet." +msgid "Delete Connection to Server" +msgstr "Bezpośrednie połłączenie z internetem." + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Archive deleted." +msgid "Server deleted." +msgstr "Archiwum zostało usunięte." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6427,11 +6856,6 @@ msgstr "" #~ msgid "Invalid archive name" #~ msgstr "Niewłaściwa nazwa użytkownika" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "Usuń" - #, fuzzy #~| msgid "Disks" #~ msgid "Disk" @@ -6497,9 +6921,6 @@ msgstr "" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Włącz przekazywanie na twoim serwerze BIND" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Lista adresów IP rozdzielonych spacją" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Ustawiono przekazywanie" @@ -6554,9 +6975,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "Przejdż do aplikacji" -#~ msgid "Current Network Configuration" -#~ msgstr "Aktualna konfiguracja sieci" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index a0f7efefb..442581da0 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1654,39 +1663,39 @@ msgstr "Apagar este arquivo permanentemente?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1695,8 +1704,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -2280,6 +2289,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2597,7 +2610,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2948,68 +2961,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3017,179 +3030,214 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "General Configuration" +msgid "Preferred router configuration" +msgstr "Configuração Geral" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3240,14 +3288,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3282,22 +3331,30 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Configuration updated" +msgid "Router configuration type saved." +msgstr "Configuração atualizada" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3408,7 +3465,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3474,13 +3531,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3498,34 +3555,118 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection refused" msgid "Connections" msgstr "Conexão recusada" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "General Configuration" +msgid "Update..." +msgstr "Configuração Geral" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4070,86 +4211,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Para fazer chamadas SIP, uma aplicação cliente é necessária. As aplicações " -"clientes disponíveis incluem a Jitsi " -"(para computadores) e aCSipSimple (para Android)." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4235,7 +4296,7 @@ msgstr "Nome do arquivo" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4251,7 +4312,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4268,7 +4329,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4294,11 +4355,11 @@ msgstr "Nome do arquivo" msgid "Action" msgstr "Aplicações" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -5008,43 +5069,43 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid domain name" msgid "Invalid directory name." msgstr "Nome de domínio inválido" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Archive name" msgid "Share" msgstr "Nome do arquivo" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5393,10 +5454,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5715,11 +5772,360 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Invalid key." +msgstr "Nome de domínio inválido" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Servidor Web" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Connection refused" +msgid "Add Connection to Server" +msgstr "Conexão recusada" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Tem a certeza que quer remover este repositório?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Tem a certeza que quer remover este repositório?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "General Configuration" +msgid "Update Client" +msgstr "Configuração Geral" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Connection refused" +msgid "Update Connection" +msgstr "Conexão recusada" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoints:" +msgstr "Administração do servidor" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Seleccione a chave pública de SSH verificada" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoint:" +msgstr "Administração do servidor" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "General Configuration" +msgid "Updated client." +msgstr "Configuração Geral" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Arquivo apagado." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Repositório não encontrado" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added new remote SSH repository." +msgid "Added new server." +msgstr "Adicionar novo repositório de SSH remoto." + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection refused" +msgid "Connection to Server" +msgstr "Conexão recusada" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Error establishing connection to server: {}" +msgid "Modify Connection to Server" +msgstr "Erro a estabelecer ligação ao servidor: {}" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Error establishing connection to server: {}" +msgid "Delete Connection to Server" +msgstr "Erro a estabelecer ligação ao servidor: {}" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Archive deleted." +msgid "Server deleted." +msgstr "Arquivo apagado." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" @@ -6056,6 +6462,17 @@ msgstr "Aplicações" msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Para fazer chamadas SIP, uma aplicação cliente é necessária. As " +#~ "aplicações clientes disponíveis incluem a Jitsi (para computadores) e aCSipSimple (para Android)." + #, fuzzy #~| msgid "Add Remote Repository" #~ msgid "Add Remote Location" @@ -6066,11 +6483,6 @@ msgstr "" #~ msgid "Upload" #~ msgstr "Carregar Ficheiro" -#, fuzzy -#~| msgid "General Configuration" -#~ msgid "Update config" -#~ msgstr "Configuração Geral" - #~ msgid "Accessing the remote repository failed. Details: %(err)s" #~ msgstr "Acesso ao repositório remoto falhou. Detalhes: %(err)s" @@ -6175,11 +6587,6 @@ msgstr "" #~ msgid "Applications" #~ msgstr "Aplicações" -#, fuzzy -#~| msgid "General Configuration" -#~ msgid "Current Network Configuration" -#~ msgstr "Configuração Geral" - #, fuzzy #~| msgid "Service discovery server is not running" #~ msgid "is not running" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index f53b28b00..b99bcde3a 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Igor \n" "Language-Team: Russian Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1835,41 +1844,41 @@ msgstr "Окончательно удалить этот снимок?" msgid "Delete %(name)s" msgstr "Удаление %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Произошла ошибка во время настройки." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Создать репозиторий" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} удален." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" @@ -1878,8 +1887,8 @@ msgstr "Не удалось удалить {name}: {error}" msgid "Documentation" msgstr "Документация" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Руководство" @@ -2529,6 +2538,10 @@ msgstr "Получить повторно" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Удалить" @@ -2899,7 +2912,7 @@ msgstr "" "Когда выключено, игроки не могут умереть или получить урон любого рода." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Адрес" @@ -3281,48 +3294,48 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Сети" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Использовать DNSSEC на IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Тип подключения" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Имя подключения" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Физический интерфейс" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "К этому подключению должно быть привязано сетевое устройство." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Зона Брандмауэра" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3330,21 +3343,21 @@ msgstr "" "Зона брандмауэра будет контролировать службы, доступные через этот " "интерфейс. Выбирайте Внутренний только в доверенных сетях." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Внешний" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Внутренний" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Метод адресации IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3355,19 +3368,19 @@ msgstr "" "сети в качестве клиента. \"Общий\" метод позволяет {box_name} выступать как " "роутер, настраивая клиентов в сети, разделяя подключение к интернету." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Автоматически (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Общее" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Маска сети" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3375,21 +3388,21 @@ msgstr "" "Необязательное значение. Если оставить пустым, будет использоваться маска " "подсети по умолчанию, основанная на адресе." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Шлюз" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Необязательное значение." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-сервер" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3397,11 +3410,11 @@ msgstr "" "Необязательное значение. Если задано это значение, и метод адресации IPv4 " "«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Второй DNS-сервер" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3409,11 +3422,11 @@ msgstr "" "Необязательное значение. Если задано это значение и метод адресации IPv4 " "«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "Метод адресации IPv6" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3422,27 +3435,27 @@ msgstr "" "Метод \"Автоматически\" позволит получить {box_name} конфигурацию этой сети, " "что сделает его клиентом." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Автоматически" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Автоматически, только DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Игнорировать" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Префикс" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Значение от 1 до 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3451,7 +3464,7 @@ msgstr "" "«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3460,54 +3473,54 @@ msgstr "" "«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- Выберите --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Отображаемое имя сети." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Режим" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Инфраструктура" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Точка доступа" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Беспроводная Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Полоса частот" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "А (5 ГГц)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 ГГц)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Канал" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3515,11 +3528,11 @@ msgstr "" "Необязательное значение. Ограничение беспроводного канала в выбранном " "диапазоне частот. Оставьте пустым или укажите 0 для автоматического выбора." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3529,11 +3542,11 @@ msgstr "" "подключении к точке доступа, подключатся только по BSSID. Пример: 00:11:22:" "aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Режим проверки подлинности" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3541,14 +3554,49 @@ msgstr "" "Выберите WPA, если беспроводная сеть защищена и требует от клиентов пароль " "для подключения." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Open" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Текущая конфигурация сети" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Сетевые подключения" @@ -3599,14 +3647,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Не удалось разорвать подключение: соединение не найдено." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Соседние сети Wi-Fi" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Добавить подключение" @@ -3641,22 +3690,30 @@ msgstr "Не удалось удалить подключение: соедин msgid "Delete Connection" msgstr "Удаление подключения" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "В настоящее время обновляется конфигурация Tor" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Редактирование подключения" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Редактировать" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Отключить" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Включить" @@ -3767,7 +3824,7 @@ msgstr "DNS-сервер" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "По умолчанию" @@ -3842,13 +3899,13 @@ msgstr "Интервал" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3866,34 +3923,119 @@ msgstr "Показать подключение %(name)s" msgid "Computer" msgstr "Компьютер" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Подключение" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Удалить подключение %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Активные" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Неактивен" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Обновление" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Создать..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s в актуальном состоянии." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Виртуальная частная сеть" @@ -4559,117 +4701,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP-сервер" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro предоставляет различные услуги SIP, SIP софтфон можно использовать для " -"предоставления аудио и видео звонков, для мгновенных сообщений. repro " -"предоставляет сервер и пользовательскую учетную запись SIP. Он также " -"действует как прокси-сервер отправляя SIP сообщения на другие серверы в " -"Интернете, похож на электронную почту." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"Чтобы сделать SIP звонки, требуется клиентское приложение. Доступны клиенты " -"Jitsi (для компьютеров) и CSipSimple (для телефонов на Android)." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Примечание Перед использованием repro. домены и " -"пользователей необходимо настроить с помощью веб-панели настроек. Пользователи в группе admin могут иметь " -"доступ к панели настроек repro. После настройки домена, необходимо " -"перезапустить службу repro. Отключить и снова включить её." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi представляет собой набор open-source проектов, что позволяет вам легко " -"создавать и развертывать безопасные видеоконференции. Сердцем Jitsi является " -"Jitsi Videobridge и Jitsi Meet, которые позволяют вам организовывать " -"конференций в Интернете, в то время как другие проекты в рамках сообщества " -"включают другие функции, такие как аудиозвонки, запись и одновременное " -"вещание." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "rеStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Unhosted хранилище" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore это сервер для unhosted веб-" -"приложений. Идея заключается в том, чтобы расцепить веб-приложений от " -"данных. Независимо от того, где веб-приложение выполняется, данные могут " -"храниться на сервере хранения по выбору пользователя. С reStore, ваш " -"{box_name} становится сервером хранения unhosted." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Можно создавать и редактировать учетные записи в веб-" -"интерфейсе reStore." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4778,7 +4809,7 @@ msgstr "Общее" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4794,7 +4825,7 @@ msgid "Used" msgstr "Используется" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4811,7 +4842,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4839,13 +4870,13 @@ msgstr "Общий ресурс добавлен." msgid "Action" msgstr "Действия" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Добавить общий ресурс" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5640,49 +5671,49 @@ msgstr "Использование запрошенной опции не раз msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Недопустимое имя хоста" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Папка для загрузок" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Папка для загрузок" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Общее" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6096,10 +6127,6 @@ msgstr "" "обрабатывает обмен файлами Bitorrent. Обратите внимание, что BitTorrent не " "является анонимным." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Папка для загрузок" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6453,11 +6480,392 @@ msgstr "Смена пароля" msgid "Password changed successfully." msgstr "Пароль успешно изменён." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Недопустимое имя kite" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Опубликовать ключ" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Опубликованый ключ на сервере ключей." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Список IP-адресов, разделённых пробелом" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Чат-сервер" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Создание подключения" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Нет настроенных общих ресурсов." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Добавить нового посредника" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Чат-клиент" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Аутентификация на удалённый сервер не прошла." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Добавить нового посредника" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Добавить подключение" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC-клиент" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Вы уверены, что хотите удалить этот репозиторий?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Вы уверены, что хотите удалить этот репозиторий?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Чат-клиент" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Создание подключения" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Домен сервера" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Выберите проверенный открытый ключ SSH" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Домен сервера" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Добавить нового посредника" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Общий ресурс с таким именем уже существует." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "Почтовый клиент" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Обновить настройки" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "Почтовый клиент" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Удалить все" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Архив удалён." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Репозиторий не найден" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Добавить пользовательскую службу" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Тип подключения" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Обновить настройки" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Редактирование подключения" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Удаление подключения" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Общий ресурс удалён." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPоE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Универсальный" @@ -6804,6 +7212,104 @@ msgstr "Приложение отключено" msgid "Gujarati" msgstr "Гуджарати" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP-сервер" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro предоставляет различные услуги SIP, SIP софтфон можно использовать " +#~ "для предоставления аудио и видео звонков, для мгновенных сообщений. repro " +#~ "предоставляет сервер и пользовательскую учетную запись SIP. Он также " +#~ "действует как прокси-сервер отправляя SIP сообщения на другие серверы в " +#~ "Интернете, похож на электронную почту." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "Чтобы сделать SIP звонки, требуется клиентское приложение. Доступны " +#~ "клиенты Jitsi (для компьютеров) и CSipSimple (для телефонов на Android)." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Примечание Перед использованием repro. домены и " +#~ "пользователей необходимо настроить с помощью веб-панели настроек. Пользователи в группе admin могут " +#~ "иметь доступ к панели настроек repro. После настройки домена, необходимо " +#~ "перезапустить службу repro. Отключить и снова включить её." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi представляет собой набор open-source проектов, что позволяет вам " +#~ "легко создавать и развертывать безопасные видеоконференции. Сердцем Jitsi " +#~ "является Jitsi Videobridge и Jitsi Meet, которые позволяют вам " +#~ "организовывать конференций в Интернете, в то время как другие проекты в " +#~ "рамках сообщества включают другие функции, такие как аудиозвонки, запись " +#~ "и одновременное вещание." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "rеStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Unhosted хранилище" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore это сервер для unhosted веб-" +#~ "приложений. Идея заключается в том, чтобы расцепить веб-приложений от " +#~ "данных. Независимо от того, где веб-приложение выполняется, данные могут " +#~ "храниться на сервере хранения по выбору пользователя. С reStore, ваш " +#~ "{box_name} становится сервером хранения unhosted." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Можно создавать и редактировать учетные записи в веб-" +#~ "интерфейсе reStore." + #~ msgid "Module: %(module)s" #~ msgstr "Модуль: %(module)s" @@ -7207,9 +7713,6 @@ msgstr "Гуджарати" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Удалить снимок %(number)s" -#~ msgid "Delete All" -#~ msgstr "Удалить все" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "Удалить снимок #%(number)s" @@ -7415,9 +7918,6 @@ msgstr "Гуджарати" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "Включить переадресацию на сервере BIND" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Список IP-адресов, разделённых пробелом" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Настройка переадресации обновлена" @@ -7533,9 +8033,6 @@ msgstr "Гуджарати" #~ msgid "Go to Apps" #~ msgstr "Перейдите в раздел приложений" -#~ msgid "Current Network Configuration" -#~ msgstr "Текущая конфигурация сети" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 9b75d74cc..22eca540c 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1684,39 +1693,39 @@ msgstr "Želite ta arhiv trajno izbrisati?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1725,8 +1734,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2291,6 +2300,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2585,7 +2598,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2922,68 +2935,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2991,179 +3004,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3214,14 +3260,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3256,22 +3303,30 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Configuration updated" +msgid "Router configuration type saved." +msgstr "Konfiguracija je posodobljena" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3382,7 +3437,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3448,13 +3503,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3472,34 +3527,116 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection refused" msgid "Connections" msgstr "Povezava je zavrnjena" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -4040,82 +4177,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4199,7 +4260,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4215,7 +4276,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4232,7 +4293,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4256,11 +4317,11 @@ msgstr "" msgid "Action" msgstr "Šifriranje" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4959,41 +5020,41 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5335,10 +5396,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5659,11 +5716,356 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid key." +msgstr "Neveljavno ime gostitelja" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Domain Name Server" +msgid "As a Server" +msgstr "Strežnik z imenom domene" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Connection refused" +msgid "Add Connection to Server" +msgstr "Povezava je zavrnjena" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Ali ste prepričani, da želite odstraniti to skladišče?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Ali ste prepričani, da želite odstraniti to skladišče?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Connection refused" +msgid "Update Connection" +msgstr "Povezava je zavrnjena" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoints:" +msgstr "Skrbništvo strežnika" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server Administration" +msgid "Server endpoint:" +msgstr "Skrbništvo strežnika" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "Create remote backup repository" +msgid "Client with public key already exists" +msgstr "Ustvari oddaljeno skladišče za rezervne kopije" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Arhiv je izbrisan." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Ne najdem skladišča" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added new repository." +msgid "Added new server." +msgstr "Dodano je novo skladišče." + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection refused" +msgid "Connection to Server" +msgstr "Povezava je zavrnjena" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Error installing application: {error}" +msgid "Modify Connection to Server" +msgstr "Napaka ob nameščanju aplikacije: {error}" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Error installing application: {error}" +msgid "Delete Connection to Server" +msgstr "Napaka ob nameščanju aplikacije: {error}" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Archive deleted." +msgid "Server deleted." +msgstr "Arhiv je izbrisan." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 744c3bcf9..4a179a2db 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2020-01-25 17:21+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Swedish Git handledning." -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "Läs-skrivåtkomst till Git-respositories" @@ -1749,33 +1758,33 @@ msgstr "Radera detta arkiv permanent?" msgid "Delete %(name)s" msgstr "Ta bort %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Respository skapat." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Ett fel uppstod medan skapa ett repository." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Respository redigerad." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} borttagen." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" @@ -1784,8 +1793,8 @@ msgstr "Kunde inte ta bort {name}: {error}" msgid "Documentation" msgstr "Dokumentation" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -2459,6 +2468,10 @@ msgstr "Återfå" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Ta bort" @@ -2822,7 +2835,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Om inaktiverat kan spelare inte dö eller få skador av något slag." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adress" @@ -3205,11 +3218,11 @@ msgstr "Alla" msgid "All web apps" msgstr "Alla webbappar" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Nätverk" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3217,7 +3230,7 @@ msgstr "" "Konfigurera nätverksenheter. Anslut till Internet via Ethernet, Wi-Fi eller " "PPPoE. Dela den anslutningen med andra enheter i nätverket." -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3225,32 +3238,32 @@ msgstr "" "Enheter som administreras via andra metoder kanske inte är tillgängliga för " "konfiguration här." -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Använder DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Anslutningstyp" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Anslutningens namn" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fysiskt gränssnitt" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Den nätverksenhet som denna anslutning ska knytas till." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Brandväggs-zon" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3258,21 +3271,21 @@ msgstr "" "Brandväggs-zonen bestämmer vilka tjänster är tillgängliga genom detta " "gränssnitt. Välj endast interna för betrodda nätverk." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "Addresseringsmetod för IPv4" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3284,19 +3297,19 @@ msgstr "" "göra {box_name} fungera som en router, konfigurera klienter på detta nätverk " "och dela sin Internet-anslutning." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Delade" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Nätmask" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3304,21 +3317,21 @@ msgstr "" "Valfritt värde. Om detta lämnas tomt kommer en standard nätmask baserad på " "adressen användas." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Valfritt värde." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3327,11 +3340,11 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "Sekundär DNS-server" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3339,11 +3352,11 @@ msgstr "" "Valfritt värde. Om värde anges och IPv4-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6-Addresseringsmetod" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3352,27 +3365,27 @@ msgstr "" "\"Automatisk\" metoder kommer att göra {box_name} hämta konfiguration från " "det här nätverket och gör det till en klient." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Automatisk, bara DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Ignorera" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Prefix" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "Värde mellan 1 och 128." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3381,7 +3394,7 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3389,54 +3402,54 @@ msgstr "" "Valfritt värde. Om värde anges och IPv6-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "--Välj--" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Synligt namn för nätverket." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Läge" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Kopplingspunkt" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc-" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frekvensbandet" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3444,11 +3457,11 @@ msgstr "" "Valfritt värde. Trådlösa kanalen i det valda frekvensbandet för att begränsa " "till. Tomt eller 0 värde betyder automatiskt val." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3458,11 +3471,11 @@ msgstr "" "en åtkomstpunkt ska du endast ansluta om åtkomstpunktens BSSID matchar det " "som angetts. Exempel: 00:11:22: aa: bb: cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Autentiseringsläge" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3470,14 +3483,49 @@ msgstr "" "Välj WPA om det trådlösa nätverket är säkert och kräver att användare har " "lösenord för att ansluta." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Öppet" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Aktuell Nätverkskonfiguration" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Nätverksanslutningar" @@ -3530,14 +3578,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "Kunde inte de-aktivera anslutning: Anslutning hittades inte." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nätverk i närheten" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Lägg till Anslutning" @@ -3572,22 +3621,30 @@ msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte." msgid "Delete Connection" msgstr "Ta Bort Anslutning" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Konfigurationen av Tor uppdateras" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Redigera anslutning" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Redigera" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Avaktivera" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Aktivera" @@ -3698,7 +3755,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Standard" @@ -3775,13 +3832,13 @@ msgstr "Avstånd" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3799,32 +3856,117 @@ msgstr "Visa anslutning %(name)s" msgid "Computer" msgstr "Dator" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "Anslutningar" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "Ta bort anslutning %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Aktiva" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Inaktiva" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Uppdatera" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Skaffa..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s är uppdaterad." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Virtuellt privat nätverk" @@ -4470,109 +4612,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration av åtkomsträttigheter uppdaterad" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "Repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP-server" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro erbjuder olika SIP-tjänster som en SIP-softphone kan använda för att " -"ge ljud-och videosamtal samt närvaro och snabbmeddelanden. repro " -"tillhandahåller en server och SIP-användarkonton som klienter kan använda " -"för att låta sin närvaro känd. Det fungerar också som en proxy för att " -"federera SIP-kommunikation till andra servrar på Internet liknar e-post." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"För att ringa SIP-samtal behövs ett klientprogram. Tillgängliga klienter är " -"bland annat Jitsi (för datorer) och " -"CSipSimple (för Android-telefoner)." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Obs: Innan repro används måste domäner och användare " -"konfigureras med " -"webbaserad konfigurationspanel . Användare i gruppen admin " -"kommer att kunna logga in på reprokonfigurationspanelen. Efter inställning " -"av domänen krävs det att omstartstjänsten startas om. Inaktivera tjänsten " -"och aktivera den igen." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi är en uppsättning projekt med öppen källkod som gör att du enkelt kan " -"skapa och distribuera säkra videokonferenslösningar. I hjärtat av Jitsi är " -"Jitsi Videobridge och Jitsi Meet, som låter dig konferera på Internet, medan " -"andra projekt i communityn möjliggör andra funktioner som ljud, uppringning, " -"inspelning och simulgjutning." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "Återställa" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Ovärdbaserad lagring" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore är en server för ovärdbaserade " -"webbprogram. Tanken är att koppla loss webbapplikationer från data. " -"Oavsett var ett webbprogram hanteras från, kan data lagras på en ovärd " -"lagringsserver av användarens val. Med reStore blir din {box_name} din " -"ovärdbaserade lagringsserver." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"Du kan skapa och redigera konton i webbgränssnittet reStore ." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4681,8 +4720,12 @@ msgid "Shares" msgstr "Shares" #: plinth/modules/samba/templates/samba.html:41 +#, fuzzy +#| msgid "" +#| "Note: only specially created directories will be shared on selected " +#| "disks, not the whole disk." msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" "Obs: endast särskilt skapade kataloger kommer att delas på valda diskar, " @@ -4698,7 +4741,9 @@ msgid "Used" msgstr "Används" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +#, fuzzy +#| msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "VFAT-partitioner stöds inte" #: plinth/modules/samba/templates/samba.html:103 @@ -4717,8 +4762,12 @@ msgid "Users who can currently access group and home shares" msgstr "Användare som för närvarande kan komma åt grupp-och hem resurser" #: plinth/modules/samba/templates/samba.html:113 +#, fuzzy +#| msgid "" +#| "Users who need to re-enter their password on the password change page to " +#| "access group and home shares" msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" "Användare som behöver ange sitt lösenord igen på sidan Ändra lösenord för " @@ -4744,11 +4793,11 @@ msgstr "Resursnamn" msgid "Action" msgstr "Åtgärder" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "Öppna Share" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "Grupp Share" @@ -5518,39 +5567,39 @@ msgstr "Inte tillåtet att använda det begärda alternativet." msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "Ogiltigt katalognamn." -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "Katalogen finns inte." -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "Sökvägen är inte en katalog." -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "Katalogen är inte läsbar av användaren." -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "Katalogen är inte skrivbar av användaren." -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "Katalog" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "Underkatalog (valfritt)" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "Share" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "Annan katalog (specificera nedan)" @@ -5953,10 +6002,6 @@ msgstr "" "BitTorrent är ett peer-to-peer-fildelningsprotokoll. Transmission daemon " "hanterar bitorrent fildelning. Observera att BitTorrent inte är anonym." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "Ladda ner katalog" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6303,11 +6348,390 @@ msgstr "Ändra lösenord" msgid "Password changed successfully." msgstr "Lösenordet har ändrats." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Ogiltigt kite-namn" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Publicera nyckel" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Publicerade nyckeln till nyckelserver." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Chat-Server" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Skapa anslutning" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "Inga shares har konfigurerats." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Lägg till ny introduktören" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Chat klient" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "Autentisering till remote servern misslyckades." + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Lägg till ny introduktören" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Lägg till Anslutning" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC-klient" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Är du säker på att du vill ta bort den här respository?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Är du säker på att du vill ta bort den här respository?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Chat klient" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Skapa anslutning" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Server-domän" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "Välj verifierad Offentlig SSH-nyckel" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Server-domän" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Lägg till ny introduktören" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "Client with public key already exists" +msgstr "Det finns redan en share med det här namnet." + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-postklient" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Uppdatera inställningar" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-postklient" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "Ta bort" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Archiv borttagen." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Databasen hittades inte" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Lade till anpassad service" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Anslutningstyp" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Uppdatera inställningar" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Redigera Anslutning" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Ta Bort Anslutning" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Share deleted." +msgid "Server deleted." +msgstr "Share borttagen." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "Pppoe" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Generiska" @@ -6655,6 +7079,96 @@ msgstr "Programmet är inaktiverat" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "repro" +#~ msgstr "Repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP-server" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro erbjuder olika SIP-tjänster som en SIP-softphone kan använda för " +#~ "att ge ljud-och videosamtal samt närvaro och snabbmeddelanden. repro " +#~ "tillhandahåller en server och SIP-användarkonton som klienter kan använda " +#~ "för att låta sin närvaro känd. Det fungerar också som en proxy för att " +#~ "federera SIP-kommunikation till andra servrar på Internet liknar e-post." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "För att ringa SIP-samtal behövs ett klientprogram. Tillgängliga klienter " +#~ "är bland annat Jitsi (för datorer) " +#~ "och CSipSimple (för Android-telefoner)." + +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Obs: Innan repro används måste domäner och användare " +#~ "konfigureras med webbaserad konfigurationspanel . Användare i gruppen admin kommer att kunna logga in på reprokonfigurationspanelen. Efter " +#~ "inställning av domänen krävs det att omstartstjänsten startas om. " +#~ "Inaktivera tjänsten och aktivera den igen." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi är en uppsättning projekt med öppen källkod som gör att du enkelt " +#~ "kan skapa och distribuera säkra videokonferenslösningar. I hjärtat av " +#~ "Jitsi är Jitsi Videobridge och Jitsi Meet, som låter dig konferera på " +#~ "Internet, medan andra projekt i communityn möjliggör andra funktioner som " +#~ "ljud, uppringning, inspelning och simulgjutning." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "Återställa" + +#~ msgid "Unhosted Storage" +#~ msgstr "Ovärdbaserad lagring" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore är en server för ovärdbaserade webbprogram. Tanken är att koppla loss webbapplikationer från data. " +#~ "Oavsett var ett webbprogram hanteras från, kan data lagras på en ovärd " +#~ "lagringsserver av användarens val. Med reStore blir din {box_name} din " +#~ "ovärdbaserade lagringsserver." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "Du kan skapa och redigera konton i webbgränssnittet reStore ." + #~ msgid "Module: %(module)s" #~ msgstr "Modul: %(module)s" @@ -6861,11 +7375,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "Ta bort %(name)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "Ta bort" - #, fuzzy #~| msgid "Delete %(name)s" #~ msgid "Delete snapshot #%(number)s" @@ -6987,9 +7496,6 @@ msgstr "Gujarati" #~ msgid "Go to Apps" #~ msgstr "Gå till Applikationer" -#~ msgid "Current Network Configuration" -#~ msgstr "Aktuell Nätverkskonfiguration" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index d44c0795b..9e474ac93 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:276 msgid "Passphrase" msgstr "" @@ -342,7 +342,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -368,6 +368,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 +#: plinth/modules/networks/templates/router_configuration_update.html:34 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:47 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -588,8 +589,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: 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/bind/views.py:58 plinth/modules/deluge/views.py:67 +#: 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 "" @@ -880,6 +882,10 @@ msgstr "" msgid "Download files using BitTorrent applications" msgstr "" +#: plinth/modules/deluge/forms.py:35 plinth/modules/transmission/forms.py:35 +msgid "Download directory" +msgstr "" + #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" msgstr "" @@ -1108,16 +1114,16 @@ msgstr "" msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:213 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:214 #: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:216 msgid "Show password" msgstr "" @@ -1204,7 +1210,10 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 +#: plinth/modules/tor/templates/tor.html:51 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +#: plinth/templates/app.html:42 msgid "Status" msgstr "" @@ -1367,7 +1376,7 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:64 plinth/templates/cards.html:49 msgid "Disabled" msgstr "" @@ -1459,7 +1468,7 @@ msgid "" "gittutorial\">Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1553,33 +1562,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1588,8 +1597,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2153,6 +2162,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2447,7 +2460,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2782,68 +2795,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2851,179 +2864,212 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3074,14 +3120,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3116,22 +3163,28 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +msgid "Router configuration type saved." +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3242,7 +3295,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3308,13 +3361,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3332,32 +3385,114 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 msgid "Connections" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3898,82 +4033,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4057,7 +4116,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4071,7 +4130,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4088,7 +4147,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4110,11 +4169,11 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4807,39 +4866,39 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5181,10 +5240,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5497,11 +5552,324 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 -msgid "PPPoE" +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:194 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:212 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:217 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:254 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:274 +msgid "Server deleted." msgstr "" #: plinth/network.py:42 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 112711a0e..0121a7165 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1780,37 +1789,37 @@ msgstr "%(name)s అనుసంధానం శాశ్వత msgid "Delete %(name)s" msgstr "%(name)s తొలగించు" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" @@ -1819,8 +1828,8 @@ msgstr "{name} ను తొలగించలేము: {error}" msgid "Documentation" msgstr "పత్రావళి" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "కరదీపిక" @@ -2467,6 +2476,10 @@ msgstr "తిరిగి-పొందు" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "తొలగించు" @@ -2838,7 +2851,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "డిసేబుల్ లో ఉన్నప్పుడు, క్రీడాకారులు చనిపోయే లేదా ఏ రకమైన నష్టం అందుకోలేరు" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "చిరునామా" @@ -3223,49 +3236,49 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "అల్లికలు" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} పై DNSSEC ఉపయోగించు" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "అనుసంధాన రకం" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "అనుసంధానం పేరు" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "భౌతిక సంవిధానం" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 #, fuzzy msgid "The network device that this connection should be bound to." msgstr "నెట్వర్కు పరికర ఈ కనెక్షన్ బంధం ఉండాలని" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "కంచుకోట క్షేత్రాం" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 #, fuzzy msgid "" "The firewall zone will control which services are available over this " @@ -3274,21 +3287,21 @@ msgstr "" "ఫైర్వాల్ జోన్ ఇది సేవలు ఇంటర్ఫేస్లు అందుబాటులో ఉన్నాయి నియంత్రిస్తాయి. నమ్మదగిన నెట్వర్కులలో మాత్రమే అంతర్గత " "ఎంచుకోండి." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "బహిర్గత" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "అంతర్గత" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, fuzzy, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3299,39 +3312,39 @@ msgstr "" "{box_name}. \"భాగస్వామ్యం\" పద్దతి ఈ నెట్వర్క్ ఖాతాదారులతో ఆకృతీకరించుటకు మరియు దాని ఇంటర్నెట్ " "కనెక్షన్ భాగస్వామ్యం, ఆపోర్టును చేస్తుంది {box_name} 2 చట్టం" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "పంచుకోబడ్డ" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "నెట్ మాస్క్" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "ఐచ్ఛిక విలువ. ఖాళీగా ఉంటే, చిరునామాపై ఆధారపడి ఒక డిఫాల్ట్ నెట్మాస్క్ ఉపయోగించబడుతుంది." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "గేట్వే" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "ఐచ్ఛిక విలువ." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS సేవకం" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 addressing method is " @@ -3340,11 +3353,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "ద్వితీయ DNS సేవకం" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3353,11 +3366,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, fuzzy, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3366,31 +3379,31 @@ msgstr "" "\"ఆటోమేటిక్\" పద్ధతులు ఒక క్లయింట్ మేకింగ్ ఈ నెట్వర్క్ నుండి {box_name} 1 ఆర్జనకు ఆకృతీకరణ " "చేస్తుంది." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 #, fuzzy msgid "Automatic" msgstr "స్వయంచాలక" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "పట్టించుకోకండి" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 #, fuzzy msgid "Prefix" msgstr "ఉపసర్గ" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "1 మరియు 128 మధ్యగల విలువ." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 addressing method is " @@ -3399,7 +3412,7 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇవ్వబడుతుంది ఉంటే మరియు IPv6 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" ఉంది, " "DHCP సర్వర్ అందించిన DNS సర్వర్లు విస్మరించబడుతుంది" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " @@ -3408,56 +3421,56 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv6 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "--ఎంచుకోండి--" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "నెట్వర్క్ యొక్క కనిపించే పేరు." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "విధం" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "ఇన్ఫ్రాస్ట్రక్చర్" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "ప్రాప్తి సూచి" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 #, fuzzy msgid "Ad-hoc" msgstr "తదర్థ" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 #, fuzzy msgid "Frequency Band" msgstr "ఫ్రీక్వెన్సీ బ్యాండ్" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "ఎ (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "బి/జి(2.4GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "మార్గం" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 #, fuzzy msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " @@ -3466,11 +3479,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఎంపిక ఫ్రీక్వెన్సీ బ్యాండ్ వైర్లెస్ ఇన్ ఛానెల్కు నిరోధించండి. ఖాళీ లేదా 0 విలువ స్వయంచాలక " "ఎంపిక అర్థం." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 #, fuzzy msgid "" "Optional value. Unique identifier for the access point. When connecting to " @@ -3480,25 +3493,60 @@ msgstr "" "ఐచ్ఛికము విలువ. ప్రవేశ బిందువు కోసం ప్రత్యేక ఐడెంటిఫైయర్. ఒక యాక్సెస్ పాయింట్ కనెక్ట్ చేసినప్పుడు, యాక్సెస్ " "పాయింట్ BSSID అందించిన మ్యాచ్లు మాత్రమే ఉంటే కనెక్ట్. ఉదాహరణ: 00: 11: 22: aa: BB: సిసి." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "ప్రామాణీకరణ విధం" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 #, fuzzy msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "వైర్లెస్ నెట్వర్క్ భద్రతతో కనెక్ట్ పాస్వర్డ్ను ఖాతాదారులకు అవసరం ఉంటే WPA ఎంచుకోండి." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA (వైఫై రక్షిత యాక్సెస్)" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "తెరచిన" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "ప్రస్తుత అల్లిక ఆకృతీకరణ" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "నెట్వర్క్ అనుసంధానాలు" @@ -3549,14 +3597,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "అనుసంధానం క్రియారహితం విఫలమైంది: అనుసంధానం దొరకలేదు." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "సమీప వై-ఫై నెట్వర్కులు" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "అనుసంధానాన్ని జతచేయండి" @@ -3593,22 +3642,30 @@ msgstr "అనుసంధానం తొలగించడం విఫలమ msgid "Delete Connection" msgstr "అనుసంధానం తొలగించు" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "టోర్ ఆకృతీకరణ నవీకరించబడుతుంది" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "అనుసంధానాన్ని సవరించు" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "సవరించు" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "క్రియారహితం చేయి" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "క్రియాశీలించు" @@ -3719,7 +3776,7 @@ msgstr "సేవిక" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "అప్రమేయం" @@ -3794,13 +3851,13 @@ msgstr "అంతరం" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "ఈథర్నెట్" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3818,29 +3875,113 @@ msgstr "అనుసంధానం చూపించు %(name)s" msgid "Computer" msgstr "కంప్యూటర్" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "అనుసంధానం" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "అనుసంధానం తొలగించు %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "క్రియాశీల" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "క్రియారహిత" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "నవీకరణ యూ.ఆర్.ఎల్" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "సృష్టించు..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s తాజాగా ఉంది." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "తర్వాత" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "Open" @@ -3848,6 +3989,7 @@ msgid "OpenVPN" msgstr "తెరచిన" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" @@ -4496,99 +4638,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "రెప్రో" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "DNS సేవకం" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"ఎస్.ఐ.పి సాఫ్ట్ వేర్ ఆడియో మరియు వీడియో కాల్స్, ఉనికిని మరియు తక్షణ సందేశాలను అందించడానికి ఉపయోగించుకునే " -"వివిధ ఎస్.ఐ.పి సేవలను అందిస్తుంది. రెప్రో క్లయింట్లను వారి ఉనికిని తెలియచేయడానికి ఉపయోగించే సర్వర్ మరియు " -"ఎస్.ఐ.పి వినియోగదారు ఖాతాలను అందిస్తుంది. ఇది ఇదే విధంగా ఇంటర్నెట్లో ఇతర సర్వర్లకు ఎస్.ఐ.పి " -"కమ్యూనికేషన్స్ను సమాఖ్యపరిచేందుకు ఒక ప్రాక్సీగా పనిచేస్తుంది." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"SIP కాల్స్ చేయడానికి, క్లయింట్ అప్లికేషన్ అవసరమవుతుంది. Jitsi(కంప్యూటర్ కు) మరియు CSipSimple(ఆండ్రాయిడ్ ఫోన్లకు) అందుబాటులో ఖాతాదారులకు " -"ఉన్నాయి." - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "జిట్సి మీట్" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"జిట్సి అనేది వీడియో కాన్ఫరెన్సింగ్ పరిష్కారాలను మీరు సులభంగా నిర్మించడానికి మరియు సురక్షింతంగా అమలు చేయడానికి " -"తోడ్పడే ఓపెన్ సోర్స్ ప్రాజెక్ట్ల సమితి. జిట్సి యొక్క ముఖ్య లక్షణాలు జిట్సి వీడియోబ్రిడ్జ్ మరియు జిట్సి మీట్, ఇవి " -"మీకు ఇంటర్నెట్లో సమావేశాలను ఏర్పాటు చేసుకోడానికి, కమ్యూనిటీ లో ఇతర ప్రాజెక్టులు ఆడియో, డయల్ -ఇన్, " -"రికార్డింగ్, మరియు సైమల్ఖ్యస్టింగ్ వంటి ఇతర సౌకర్యాలు ఏర్పాటు చేసుకోడానికి సహకరిస్తుంది." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "సి సిప్ సింపుల్" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "రిస్టోర్" - -#: plinth/modules/restore/__init__.py:39 -#, fuzzy -msgid "Unhosted Storage" -msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -" లో మీరు ఖాతాలను సృష్టించవచ్చు మరియు మార్చులను చేయవచ్చు వెబ్ ఇంటర్ఫెస్ ని " -"పునరుద్ధరించండి." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4678,7 +4727,7 @@ msgstr "పంచుకోబడ్డ" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4694,7 +4743,7 @@ msgid "Used" msgstr "ఉపయోగించబడినది" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4711,7 +4760,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4739,13 +4788,13 @@ msgstr "పంచుకోబడ్డ" msgid "Action" msgstr "చర్యలు" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "సేవ జోడించండి" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5548,47 +5597,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "ఆతిథ్యనామం చెల్లనిది" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "డైరెక్టరీని దిగుమతి చేయు" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "డైరెక్టరీని దిగుమతి చేయు" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "పంచుకోబడ్డ" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5983,10 +6032,6 @@ msgstr "" "బిట్ టోర్రెంట్ పీర్-టు-పీర్ ఫైల్ షేరింగ్ ప్రోటోకాల్. ట్రాన్స్మిషన్ డెమోన్ బిట్ టోర్రెంట్ ఫైల్ భాగస్వామ్యాన్ని నిర్వహిస్తుంది. " "బిట్ టోర్రెంట్ అజ్ఞాత కాదని గమనించండి." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "డైరెక్టరీని దిగుమతి చేయు" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "టైనీ టైనీ RSS" @@ -6323,11 +6368,376 @@ msgstr "పాస్‌వర్డ్ మార్చు" msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "చెల్లని కైట్ పేరు" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "కీని ప్రచురించండి" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "కీ కీసేవకానికి ప్రచురించబడింది." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "IP చిరునామాల జాబితా, స్పేస్ ద్వారా వేరుచేయటమయినది" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "కబుర్ల సేవిక" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "అనుసంధానం సృష్టించు" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +#, fuzzy +#| msgid "No shares currently configured." +msgid "Not configured yet." +msgstr "ప్రస్తుతం ఏ షేర్లు ఏర్పాటు చేయబడలేదు." + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "కొత్త పరిచయకర్తని జోడించండి" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "చాట్ క్లయింట్" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "కొత్త పరిచయకర్తని జోడించండి" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "అనుసంధానాన్ని జతచేయండి" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +msgid "Add Client" +msgstr "ఐ ర్ సి క్లయింట్ (Quassel)" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "చాట్ క్లయింట్" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "అనుసంధానం సృష్టించు" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +msgid "Server endpoints:" +msgstr "సర్వర్ డొమైన్" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +msgid "Server public key:" +msgstr "సర్వర్ పోర్ట్" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +msgid "Server endpoint:" +msgstr "సర్వర్ డొమైన్" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "కొత్త పరిచయకర్తని జోడించండి" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +msgid "Client with public key already exists" +msgstr "ఈ సేవ ఇప్పటికే ఉంది" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +msgid "Allowed Client" +msgstr "తపాల బంట్రౌతు(Roundcube)" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "అమరికను నవీకరించు" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +msgid "Modify Client" +msgstr "తపాల బంట్రౌతు(Roundcube)" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "అన్నింటిని తొలగించు" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "{name} deleted." +msgid "Client deleted." +msgstr "{name} తొలగించబడింది." + +#: plinth/modules/wireguard/views.py:163 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +msgid "Added new server." +msgstr "కస్టమ్ సేవ చేర్చబడింది" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "అనుసంధాన రకం" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "అమరికను నవీకరించు" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "అనుసంధానాన్ని సవరించండి" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "అనుసంధానం తొలగించు" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} తొలగించబడింది." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "పిపిపిఒఇ" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "సాధారణమైన" @@ -6666,6 +7076,69 @@ msgstr "అనువర్తనం ఆమోదింపబడలేదు" msgid "Gujarati" msgstr "" +#~ msgid "repro" +#~ msgstr "రెప్రో" + +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "DNS సేవకం" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "ఎస్.ఐ.పి సాఫ్ట్ వేర్ ఆడియో మరియు వీడియో కాల్స్, ఉనికిని మరియు తక్షణ సందేశాలను అందించడానికి " +#~ "ఉపయోగించుకునే వివిధ ఎస్.ఐ.పి సేవలను అందిస్తుంది. రెప్రో క్లయింట్లను వారి ఉనికిని తెలియచేయడానికి " +#~ "ఉపయోగించే సర్వర్ మరియు ఎస్.ఐ.పి వినియోగదారు ఖాతాలను అందిస్తుంది. ఇది ఇదే విధంగా ఇంటర్నెట్లో ఇతర " +#~ "సర్వర్లకు ఎస్.ఐ.పి కమ్యూనికేషన్స్ను సమాఖ్యపరిచేందుకు ఒక ప్రాక్సీగా పనిచేస్తుంది." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "SIP కాల్స్ చేయడానికి, క్లయింట్ అప్లికేషన్ అవసరమవుతుంది. Jitsi(కంప్యూటర్ కు) మరియు CSipSimple(ఆండ్రాయిడ్ ఫోన్లకు) అందుబాటులో " +#~ "ఖాతాదారులకు ఉన్నాయి." + +#~ msgid "Jitsi Meet" +#~ msgstr "జిట్సి మీట్" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "జిట్సి అనేది వీడియో కాన్ఫరెన్సింగ్ పరిష్కారాలను మీరు సులభంగా నిర్మించడానికి మరియు సురక్షింతంగా అమలు " +#~ "చేయడానికి తోడ్పడే ఓపెన్ సోర్స్ ప్రాజెక్ట్ల సమితి. జిట్సి యొక్క ముఖ్య లక్షణాలు జిట్సి వీడియోబ్రిడ్జ్ మరియు జిట్సి " +#~ "మీట్, ఇవి మీకు ఇంటర్నెట్లో సమావేశాలను ఏర్పాటు చేసుకోడానికి, కమ్యూనిటీ లో ఇతర ప్రాజెక్టులు ఆడియో, డయల్ -" +#~ "ఇన్, రికార్డింగ్, మరియు సైమల్ఖ్యస్టింగ్ వంటి ఇతర సౌకర్యాలు ఏర్పాటు చేసుకోడానికి సహకరిస్తుంది." + +#~ msgid "CSipSimple" +#~ msgstr "సి సిప్ సింపుల్" + +#~ msgid "reStore" +#~ msgstr "రిస్టోర్" + +#, fuzzy +#~ msgid "Unhosted Storage" +#~ msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ " లో మీరు ఖాతాలను సృష్టించవచ్చు మరియు మార్చులను చేయవచ్చు వెబ్ ఇంటర్ఫెస్ " +#~ "ని పునరుద్ధరించండి." + #~ msgid "Module: %(module)s" #~ msgstr "అధిభాగం: %(module)s" @@ -7134,9 +7607,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "స్నాప్షాట్‌ #%(number)s 1 తొలగించు" -#~ msgid "Delete All" -#~ msgstr "అన్నింటిని తొలగించు" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "స్నాప్షాట్‌ #%(number)s 1తొలగించు" @@ -7295,9 +7765,6 @@ msgstr "" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "మీ BIND సర్వర్లో ఫార్వార్డింగ్ ను ప్రారంభించండి" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "IP చిరునామాల జాబితా, స్పేస్ ద్వారా వేరుచేయటమయినది" - #, fuzzy #~| msgid "Configuration updated" #~ msgid "Set forwarding configuration updated" @@ -7383,9 +7850,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "అనువర్తనాల వైపు వెళ్ళండి" -#~ msgid "Current Network Configuration" -#~ msgstr "ప్రస్తుత అల్లిక ఆకృతీకరణ" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" @@ -7556,9 +8020,6 @@ msgstr "" #~ msgid "show password" #~ msgstr "రహస్యపదం చూపించు" -#~ msgid "Next" -#~ msgstr "తర్వాత" - #~ msgid "Create Wiki/Blog" #~ msgstr "వికీ/బ్లాగ్ సృష్టించు" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 49dd77df8..72bc52ab0 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-0500\n" "PO-Revision-Date: 2019-08-08 00:22+0000\n" "Last-Translator: Mesut Akcan \n" "Language-Team: Turkish Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1786,41 +1795,41 @@ msgstr "Bu anlık daimi olarak silinsin mi?" msgid "Delete %(name)s" msgstr "%(name)s unsurunu sil" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, 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:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Depo oluştur" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} silindi." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" @@ -1829,8 +1838,8 @@ msgstr "{name} silinemedi: {error}" msgid "Documentation" msgstr "Belgelendirme" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kullanım Kılavuzu" @@ -2501,6 +2510,10 @@ 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 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "Sil" @@ -2881,7 +2894,7 @@ msgstr "" "Devre dışı bırakıldığında, oyuncular ölemez ve hiçbir zarar göremezler." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "Adres" @@ -3255,48 +3268,48 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "Ağlar" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} üzerinde DNSSEC kullanılıyor" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "Bağlantı Türü" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "Bağlantı İsmi" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "Fiziki Arayüz" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "Bu bağlantının bağlanacağı ağ cihazı." -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "Güvenlik Duvarı Alanı" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3304,21 +3317,21 @@ msgstr "" "Güvenlik duvarı alanı bu arayüzlerde hangi servislerin mevcut olacağını " "kontrol eder. Dahiliyi sadece güvenilir şebekeler için seçin." -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Harici" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Dahili" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresleme Metodu" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3330,19 +3343,19 @@ msgstr "" "kutusunun bir yönlendirici olarak iş görmesini, bu ağdaki istemcileri " "yapılandırmasını ve İnternet bağlantısını paylaşmasını sağlayacaktır." -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "Otomatik (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "Paylaşılan" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "Ağ Maskesi" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3350,21 +3363,21 @@ msgstr "" "Seçime dayalı değer. Boş bırakılırsa adrese dayalı varsayılan bir ağ maskesi " "kullanılacaktır." -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Geçit" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "Seçime dayalı değer." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS Sunucusu" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3373,11 +3386,11 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "İkinci DNS Sunucusu" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3386,11 +3399,11 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6 Adresleme Metodu" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3399,27 +3412,27 @@ msgstr "" "\"Otomatik\" metodları {box_name} kutusunun yapılandırmasını bu ağdan " "almasını sağlayacak ve onu bir istemci yapacaktır." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "Otomatik" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "Otomatik, sadece DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "Yok say" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "Önek" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "1 ilâ 128 arasında bir değer." -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3428,7 +3441,7 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3437,54 +3450,54 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- seç --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "Şebekenin görünür ismi." -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Kip" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "Altyapı" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "Erişim Noktası" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Geçici" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "Frekans Bandı" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3492,11 +3505,11 @@ msgstr "" "Seçime dayalı değer. Seçili frekans bandına sınırlanacak kablosuz kanal. Boş " "ya da 0 değeri otomatik seçim anlamına gelir." -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3506,11 +3519,11 @@ msgstr "" "noktasına bağlantı kurulduğunda, sadece erişim noktasının BSSID'si " "sağlananla eşleşiyorsa bağlanın. Örnek: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "Kimlik Doğrulama Kipi" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3518,14 +3531,49 @@ msgstr "" "Eğer kablosuz ağ güvenli ise ve istemcilerin bağlantı için parolaları " "olmasını gerektiriyorsa WPA'yi seçin." -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "Açık" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "Güncel Şebeke Yapılandırması" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "Ağ Bağlantıları" @@ -3578,14 +3626,15 @@ msgstr "" "Bağlantının devre dışı bırakılması başarısız oldu: bağlantı bulunamadı." #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "Yakındaki Wi-Fi Ağları" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "Bağlantı Ekle" @@ -3620,22 +3669,30 @@ msgstr "Bağlantının silinmesi başarısız oldu: bağlantı bulunamadı." msgid "Delete Connection" msgstr "Bağlantıyı Sil" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor yapılandırması güncellenmektedir" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "Bağlantıyı Düzenle" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "Düzenle" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "Devre Dışı Bırak" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "Etkinleştir" @@ -3746,7 +3803,7 @@ msgstr "DNS sunucusu" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "Varsayılan" @@ -3822,13 +3879,13 @@ msgstr "Aralık" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3846,34 +3903,119 @@ msgstr "%(name)s isimli bağlantıyı göster" msgid "Computer" msgstr "Bilgisayar" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "Bağlantı" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "%(name)s isimli bağlantıyı sil" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "Etkin" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "Devre Dışı" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "Güncelle" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "Oluştur..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "Plinth is up to date." +msgid "Setup %(box_name)s Behind a Router" +msgstr "Plinth günceldir." + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "OpenVPN" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "Sanal Özel Şebeke" @@ -4557,118 +4699,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Erişim izinleri yapılandırması güncellendi" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "repro" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "SIP Sunucusu" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"repro, bir SIP telefonunun hem varlık ve anlık mesajlaşma, hem de ses ya da " -"video aramalar için kullanabileceği çeşitli SIP hizmetleri sunar. repro, " -"istemcilerin varlıklarını bildirebilecekleri bir sunucu ve SIP kullanıcı " -"hesapları sağlar. Aynı zamanda e-postaya benzer bir şekilde diğer sunucular " -"ile SIP bağlantılarını federe edecek bir vekil sunucu görevi de yapar." - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"SIP aramalarında bulunabilmek için istemci bir programa ihtiyaç vardır. " -"Mevcut istemciler Jitsi (bilgisayarlar " -"için) ve CSipSimple'ı (Android telefonlar için) içerir." - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"Not: repro'yu kullanmadan önce alanlar ve kullanıcılar ağ tabanlı yapılandırma paneli ile " -"yapılandırılmalıdır. admin (yani yönetici) grubundaki kullanıcılar " -"repro yapılandırma paneline giriş yapabileceklerdir. Alan ayarlandıktan " -"sonra repro servisini tekrar başlatmak gerekir. Servisi devre dışı bırakıp " -"tekrar etkinleştirin." - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "Jitsi Meet" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" -"Jitsi, güvenli video konferans çözümlerini kolayca kurmaya yarayan açık " -"kaynaklı bir grup projedir. Jitsi'nin çekirdeğinde, İnternet üzerinden " -"konferans yapmanıza imkân veren Jitsi Video Köprüsü ve Jitsi Meet vardır, " -"diğer topluluk projeleri ise ses, arama, kayıt ve yayın gibi başka işlev " -"desteğini sağlar." - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "CSipSimple" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "Barındırılmayan Depolama" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore, barındırılmayan (unhosted) ağ " -"uygulamaları için bir sunucudur. Öne çıkan fikir, ağ uygulamalarının " -"verilerden ayrılmasıdır. Ağ uygulamalarının nereden sunulduğuna bakmaksızın " -"veriler kullanıcının seçtiği herhangi bir barındırılmayan depolama " -"sunucusunda depolanabilir. reStore ile {box_name} kutunuz barındırılmayan " -"depolama sunucunuz haline gelir." - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"reStore ağ arayüzünde hesap oluşturabilir ve " -"düzenleyebilirsiniz." - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4776,7 +4806,7 @@ msgstr "Paylaşılan" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4792,7 +4822,7 @@ msgid "Used" msgstr "Kullanılan" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4809,7 +4839,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4837,13 +4867,13 @@ msgstr "Paylaşılan" msgid "Action" msgstr "Eylemler" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Servis Ekle" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5664,47 +5694,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Geçersiz makine ismi" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "İndirme klasörü" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "İndirme klasörü" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Paylaşılan" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -6127,10 +6157,6 @@ msgstr "" "BitTorrent dosya paylaşımını idare eder. BitTorrent'ın anonim olmadığını " "unutmayın." -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "İndirme klasörü" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" @@ -6494,11 +6520,388 @@ msgstr "Parolayı Değiştir" msgid "Password changed successfully." msgstr "Parola başarılı bir şekilde değiştirildi." -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "Geçersiz kite ismi" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "Anahtarı Yayınla" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "Anahtar, anahtar sunucusuna yayınlandı." + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "Boşluklarla ayrılmış IP adresleri listesi" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Chat Server" +msgid "As a Server" +msgstr "Sohbet Sunucusu" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "Bağlantı Oluştur" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new peer" +msgstr "Yeni tanıtıcı ekle" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "Chat Client" +msgid "As a Client" +msgstr "Sohbet İstemcisi" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +#, fuzzy +#| msgid "Add new introducer" +msgid "Add a new server" +msgstr "Yeni tanıtıcı ekle" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "Bağlantı Ekle" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "IRC Client" +msgid "Add Client" +msgstr "IRC İstemcisi" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Bu depoyu kaldırmak istediğinizden emin misiniz?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Bu depoyu kaldırmak istediğinizden emin misiniz?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Chat Client" +msgid "Update Client" +msgstr "Sohbet İstemcisi" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "Bağlantı Oluştur" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "Sunucu alanı" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Server port number" +msgid "Server public key:" +msgstr "Sunucu port numarası" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "Sunucu alanı" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +#, fuzzy +#| msgid "Add new introducer" +msgid "Added new client." +msgstr "Yeni tanıtıcı ekle" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "This service already exists" +msgid "Client with public key already exists" +msgstr "Bu servis zaten mevcuttur" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "Email Client" +msgid "Allowed Client" +msgstr "E-posta İstemcisi" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Kurulumu güncelle" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "Email Client" +msgid "Modify Client" +msgstr "E-posta İstemcisi" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete All" +msgid "Delete Allowed Client" +msgstr "Tümünü Sil" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Arşiv silindi." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Havuz bulunamadı" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "Özel servis eklendi" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "Bağlantı Türü" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Kurulumu güncelle" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "Bağlantıyı Düzenle" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "Bağlantıyı Sil" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} silindi." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "Jenerik" @@ -6859,6 +7262,106 @@ msgstr "Uygulama devre dışı bırakıldı" msgid "Gujarati" msgstr "" +#~ msgid "repro" +#~ msgstr "repro" + +#~ msgid "SIP Server" +#~ msgstr "SIP Sunucusu" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "repro, bir SIP telefonunun hem varlık ve anlık mesajlaşma, hem de ses ya " +#~ "da video aramalar için kullanabileceği çeşitli SIP hizmetleri sunar. " +#~ "repro, istemcilerin varlıklarını bildirebilecekleri bir sunucu ve SIP " +#~ "kullanıcı hesapları sağlar. Aynı zamanda e-postaya benzer bir şekilde " +#~ "diğer sunucular ile SIP bağlantılarını federe edecek bir vekil sunucu " +#~ "görevi de yapar." + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "SIP aramalarında bulunabilmek için istemci bir programa ihtiyaç vardır. " +#~ "Mevcut istemciler Jitsi " +#~ "(bilgisayarlar için) ve CSipSimple'ı (Android telefonlar için) içerir." + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "Not: repro'yu kullanmadan önce alanlar ve kullanıcılar " +#~ " ağ tabanlı yapılandırma paneli ile " +#~ "yapılandırılmalıdır. admin (yani yönetici) grubundaki " +#~ "kullanıcılar repro yapılandırma paneline giriş yapabileceklerdir. Alan " +#~ "ayarlandıktan sonra repro servisini tekrar başlatmak gerekir. Servisi " +#~ "devre dışı bırakıp tekrar etkinleştirin." + +#~ msgid "Jitsi Meet" +#~ msgstr "Jitsi Meet" + +#~ msgid "" +#~ "Jitsi is a set of open-source projects that allows you to easily build " +#~ "and deploy secure videoconferencing solutions. At the heart of Jitsi are " +#~ "Jitsi Videobridge and Jitsi Meet, which let you have conferences on the " +#~ "internet, while other projects in the community enable other features " +#~ "such as audio, dial-in, recording, and simulcasting." +#~ msgstr "" +#~ "Jitsi, güvenli video konferans çözümlerini kolayca kurmaya yarayan açık " +#~ "kaynaklı bir grup projedir. Jitsi'nin çekirdeğinde, İnternet üzerinden " +#~ "konferans yapmanıza imkân veren Jitsi Video Köprüsü ve Jitsi Meet vardır, " +#~ "diğer topluluk projeleri ise ses, arama, kayıt ve yayın gibi başka işlev " +#~ "desteğini sağlar." + +#~ msgid "CSipSimple" +#~ msgstr "CSipSimple" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#~ msgid "Unhosted Storage" +#~ msgstr "Barındırılmayan Depolama" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore, barındırılmayan (unhosted) " +#~ "ağ uygulamaları için bir sunucudur. Öne çıkan fikir, ağ uygulamalarının " +#~ "verilerden ayrılmasıdır. Ağ uygulamalarının nereden sunulduğuna " +#~ "bakmaksızın veriler kullanıcının seçtiği herhangi bir barındırılmayan " +#~ "depolama sunucusunda depolanabilir. reStore ile {box_name} kutunuz " +#~ "barındırılmayan depolama sunucunuz haline gelir." + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "reStore ağ arayüzünde hesap oluşturabilir ve " +#~ "düzenleyebilirsiniz." + #~ msgid "Module: %(module)s" #~ msgstr "Öbek: %(module)s" @@ -7333,9 +7836,6 @@ msgstr "" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "#%(number)s sayılı anlığı sil" -#~ msgid "Delete All" -#~ msgstr "Tümünü Sil" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "#%(number)s sayılı anlığı sil" @@ -7500,9 +8000,6 @@ msgstr "" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "BIND sunucunuzda iletmeyi etkinleştirin" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "Boşluklarla ayrılmış IP adresleri listesi" - #~ msgid "Set forwarding configuration updated" #~ msgstr "Yönlendirme yapılandırması güncellendi" @@ -7628,9 +8125,6 @@ msgstr "" #~ msgid "Go to Apps" #~ msgstr "Uygulamalara Git" -#~ msgid "Current Network Configuration" -#~ msgstr "Güncel Şebeke Yapılandırması" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index c29b18f6d..ba301a3d7 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1626,39 +1635,39 @@ msgstr "Остаточно видалити цей архів?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Remove Repository" msgid "Edit repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1667,8 +1676,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -2235,6 +2244,10 @@ msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "" @@ -2529,7 +2542,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "" @@ -2866,68 +2879,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2935,179 +2948,214 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "General Configuration" +msgid "Preferred router configuration" +msgstr "Загальні налаштування" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "" @@ -3158,14 +3206,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "" @@ -3200,22 +3249,30 @@ msgstr "" msgid "Delete Connection" msgstr "" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Configuration updated" +msgid "Router configuration type saved." +msgstr "Конфігурацію оновлено" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "" @@ -3326,7 +3383,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "" @@ -3392,13 +3449,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "" @@ -3416,34 +3473,116 @@ msgstr "" msgid "Computer" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection refused" msgid "Connections" msgstr "З’єднання відхилено" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +msgid "Update..." +msgstr "" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "" +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 msgid "OpenVPN" msgstr "" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 msgid "Virtual Private Network" msgstr "" @@ -3984,82 +4123,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -msgid "SIP Server" -msgstr "" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" - -#: plinth/modules/repro/__init__.py:55 -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "" - -#: plinth/modules/restore/__init__.py:39 -msgid "Unhosted Storage" -msgstr "" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 msgid "Roundcube" @@ -4143,7 +4206,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4159,7 +4222,7 @@ msgid "Used" msgstr "" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4176,7 +4239,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4200,11 +4263,11 @@ msgstr "" msgid "Action" msgstr "Шифрування" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 msgid "Group Share" msgstr "" @@ -4901,41 +4964,41 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Repository not found" msgid "Invalid directory name." msgstr "Сховище не знайдено" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5277,10 +5340,6 @@ msgid "" "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -5593,11 +5652,356 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Repository not found" +msgid "Invalid key." +msgstr "Сховище не знайдено" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Domain Name Server" +msgid "As a Server" +msgstr "Сервер доменних імен" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Connection refused" +msgid "Add Connection to Server" +msgstr "З’єднання відхилено" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "Ви впевнені, що хочете видалити це сховище?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "Ви впевнені, що хочете видалити це сховище?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "Update setup" +msgid "Update Client" +msgstr "Оновити налаштування" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Connection refused" +msgid "Update Connection" +msgstr "З’єднання відхилено" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:92 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "Оновити налаштування" + +#: plinth/modules/wireguard/views.py:119 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "Архів видалено." + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "Сховище не знайдено" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added new repository." +msgid "Added new server." +msgstr "Додано нове сховище." + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection refused" +msgid "Connection to Server" +msgstr "З’єднання відхилено" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "Оновити налаштування" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Error installing application: {error}" +msgid "Modify Connection to Server" +msgstr "Помилка при встановлені застосунку: {error}" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Error installing application: {error}" +msgid "Delete Connection to Server" +msgstr "Помилка при встановлені застосунку: {error}" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "Archive deleted." +msgid "Server deleted." +msgstr "Архів видалено." + +#: plinth/network.py:42 msgid "PPPoE" msgstr "" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 19f8364ab..05f100ebe 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: 2020-01-13 18:08-0500\n" +"POT-Creation-Date: 2020-01-27 18:52-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:62 +#: plinth/modules/gitweb/__init__.py:64 msgid "Read-write access to Git repositories" msgstr "" @@ -1729,41 +1738,41 @@ msgstr "永久删除此快照?" msgid "Delete %(name)s" msgstr "删除 %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "在配置过程中出错。" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 +#: plinth/modules/gitweb/views.py:133 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:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} 已删除。" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" @@ -1772,8 +1781,8 @@ msgstr "不能删除 {name}:{error}" msgid "Documentation" msgstr "文档" -#: 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/modules/help/__init__.py:43 plinth/modules/networks/forms.py:64 +#: plinth/modules/networks/forms.py:95 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "手册" @@ -2438,6 +2447,10 @@ msgstr "重新获取" #: plinth/modules/letsencrypt/templates/letsencrypt.html:106 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/samba/templates/samba.html:142 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:39 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:88 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:89 msgid "Delete" msgstr "删除" @@ -2803,7 +2816,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "禁用时,玩家间不能互相伤害也不能死" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:97 msgid "Address" msgstr "地址" @@ -3173,68 +3186,68 @@ msgstr "" msgid "All web apps" msgstr "" -#: plinth/modules/networks/__init__.py:36 +#: plinth/modules/networks/__init__.py:42 msgid "Networks" msgstr "网络" -#: plinth/modules/networks/__init__.py:39 +#: plinth/modules/networks/__init__.py:45 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:47 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:148 +#: plinth/modules/networks/__init__.py:156 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "在 IPv{kind} 上使用 DNSSEC" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "Connection Type" msgstr "连接类型" -#: plinth/modules/networks/forms.py:43 +#: plinth/modules/networks/forms.py:44 msgid "Connection Name" msgstr "连接名称" -#: plinth/modules/networks/forms.py:45 +#: plinth/modules/networks/forms.py:46 msgid "Physical Interface" msgstr "物理接口" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "The network device that this connection should be bound to." msgstr "连接应绑定到的网络设备。" -#: plinth/modules/networks/forms.py:49 +#: plinth/modules/networks/forms.py:50 msgid "Firewall Zone" msgstr "防火墙区域" -#: plinth/modules/networks/forms.py:50 +#: plinth/modules/networks/forms.py:51 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "防火墙区域将控制哪些服务可用在此接口。选择内部只有受信任的网络。" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "外网" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:54 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "内网" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:56 msgid "IPv4 Addressing Method" msgstr "IPv4 寻址方式" -#: plinth/modules/networks/forms.py:57 +#: plinth/modules/networks/forms.py:58 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3244,39 +3257,39 @@ msgstr "" "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。“共享”方" "式会让 {box_name} 作为一个路由器,配置此网络上的客户端并共享互联网连接。" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Automatic (DHCP)" msgstr "自动 (DHCP)" -#: plinth/modules/networks/forms.py:62 +#: plinth/modules/networks/forms.py:63 msgid "Shared" msgstr "共享" -#: plinth/modules/networks/forms.py:68 +#: plinth/modules/networks/forms.py:69 msgid "Netmask" msgstr "子网掩码" -#: plinth/modules/networks/forms.py:69 +#: plinth/modules/networks/forms.py:70 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "可选的值。如果为空,则将使用基于地址的默认子网掩码。" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "网关" -#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:74 plinth/modules/networks/forms.py:104 msgid "Optional value." msgstr "可选的值。" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 +#: plinth/modules/networks/forms.py:77 plinth/modules/networks/forms.py:107 msgid "DNS Server" msgstr "DNS 服务器" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:78 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3284,11 +3297,11 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 +#: plinth/modules/networks/forms.py:83 plinth/modules/networks/forms.py:113 msgid "Second DNS Server" msgstr "备选 DNS 服务器" -#: plinth/modules/networks/forms.py:83 +#: plinth/modules/networks/forms.py:84 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3296,38 +3309,38 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:88 +#: plinth/modules/networks/forms.py:89 msgid "IPv6 Addressing Method" msgstr "IPv6 寻址方式" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:91 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:94 plinth/modules/networks/forms.py:255 msgid "Automatic" msgstr "自动" -#: plinth/modules/networks/forms.py:93 +#: plinth/modules/networks/forms.py:94 msgid "Automatic, DHCP only" msgstr "自动,只使用 DHCP" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:95 msgid "Ignore" msgstr "忽略" -#: plinth/modules/networks/forms.py:98 +#: plinth/modules/networks/forms.py:99 msgid "Prefix" msgstr "前缀" -#: plinth/modules/networks/forms.py:99 +#: plinth/modules/networks/forms.py:100 msgid "Value between 1 and 128." msgstr "在 1 到 128 之间取值。" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:108 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3335,7 +3348,7 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:113 +#: plinth/modules/networks/forms.py:114 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3343,64 +3356,64 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:123 msgid "-- select --" msgstr "-- 选择 --" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:248 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:249 msgid "The visible name of the network." msgstr "可见网络的名称。" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "模式" -#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/forms.py:251 msgid "Infrastructure" msgstr "基础架构" -#: plinth/modules/networks/forms.py:251 +#: plinth/modules/networks/forms.py:252 msgid "Access Point" msgstr "访问点" -#: plinth/modules/networks/forms.py:252 +#: plinth/modules/networks/forms.py:253 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:255 msgid "Frequency Band" msgstr "频带" -#: plinth/modules/networks/forms.py:255 +#: plinth/modules/networks/forms.py:256 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:256 +#: plinth/modules/networks/forms.py:257 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/forms.py:259 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "信道" -#: plinth/modules/networks/forms.py:259 +#: plinth/modules/networks/forms.py:260 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "可选值。可通过指定频宽限制无线信道。为空或者填 0 表示自动选择。" -#: plinth/modules/networks/forms.py:264 +#: plinth/modules/networks/forms.py:265 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:265 +#: plinth/modules/networks/forms.py:266 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3409,24 +3422,59 @@ msgstr "" "可选的值。指定接入点的标识。当要连接到一个接入点时,只会连接到符合给出值的提" "供者。例如:00:11:22:aa:bb:cc。" -#: plinth/modules/networks/forms.py:271 +#: plinth/modules/networks/forms.py:272 msgid "Authentication Mode" msgstr "身份验证模式" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:273 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "如果无线网络安全的和要求客户端具有密码才能连接,请选择 WPA。" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:275 msgid "Open" msgstr "打开" +#: plinth/modules/networks/forms.py:309 +#, fuzzy +#| msgid "Current Network Configuration" +msgid "Preferred router configuration" +msgstr "当前的网络配置" + +#: plinth/modules/networks/forms.py:314 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic

Most routers " +"provide a configuration setting called DMZ. This will allow the router to " +"forward all incoming traffic from the internet to a single IP address such " +"as the {box_name}'s address. First remember to configure a static local IP " +"address for your {box_name} in your router's configuration.

" +msgstr "" + +#: plinth/modules/networks/forms.py:328 +#, python-brace-format +msgid "" +"Forward Specific Traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:345 +msgid "" +"Router is currently unconfigured

Choose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.

" +msgstr "" + #: plinth/modules/networks/networks.py:43 msgid "Network Connections" msgstr "网络连接" @@ -3477,14 +3525,15 @@ msgid "Failed to de-activate connection: Connection not found." msgstr "无法取消激活连接: 找不到连接。" #: plinth/modules/networks/networks.py:269 -#: plinth/modules/networks/templates/connections_list.html:63 -#: plinth/modules/networks/templates/connections_list.html:65 +#: plinth/modules/networks/templates/connections_list.html:62 +#: plinth/modules/networks/templates/connections_list.html:64 msgid "Nearby Wi-Fi Networks" msgstr "附近的无线网络" #: plinth/modules/networks/networks.py:293 -#: plinth/modules/networks/templates/connections_list.html:68 -#: plinth/modules/networks/templates/connections_list.html:70 +#: plinth/modules/networks/templates/connections_list.html:67 +#: plinth/modules/networks/templates/connections_list.html:69 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:34 msgid "Add Connection" msgstr "添加连接" @@ -3519,22 +3568,30 @@ msgstr "删除连接失败: 找不到连接。" msgid "Delete Connection" msgstr "删除连接" +#: plinth/modules/networks/networks.py:442 +#, fuzzy +#| msgid "Tor configuration is being updated" +msgid "Router configuration type saved." +msgstr "Tor 配置已更新" + #: plinth/modules/networks/templates/connection_show.html:43 msgid "Edit connection" msgstr "编辑连接" #: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:83 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:84 #: plinth/templates/base.html:158 plinth/templates/base.html:159 msgid "Edit" msgstr "編輯" #: plinth/modules/networks/templates/connection_show.html:50 -#: plinth/modules/networks/templates/connections_list.html:91 +#: plinth/modules/networks/templates/connections_list.html:90 msgid "Deactivate" msgstr "停用" #: plinth/modules/networks/templates/connection_show.html:57 -#: plinth/modules/networks/templates/connections_list.html:99 +#: plinth/modules/networks/templates/connections_list.html:98 msgid "Activate" msgstr "激活" @@ -3645,7 +3702,7 @@ msgstr "DNS 服务器" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 -#: plinth/modules/storage/forms.py:150 +#: plinth/modules/storage/forms.py:156 msgid "Default" msgstr "默认" @@ -3717,13 +3774,13 @@ msgstr "间距" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:39 +#: plinth/network.py:40 msgid "Ethernet" msgstr "以太网" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:40 +#: plinth/network.py:41 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3741,29 +3798,113 @@ msgstr "显示连接 %(name)s" msgid "Computer" msgstr "计算机" -#: plinth/modules/networks/templates/connections_list.html:59 +#: plinth/modules/networks/templates/connections_list.html:58 #, fuzzy #| msgid "Connection" msgid "Connections" msgstr "连接" -#: plinth/modules/networks/templates/connections_list.html:80 +#: plinth/modules/networks/templates/connections_list.html:79 #, python-format msgid "Delete connection %(name)s" msgstr "删除连接 %(name)s" -#: plinth/modules/networks/templates/connections_list.html:105 +#: plinth/modules/networks/templates/connections_list.html:104 msgid "Active" msgstr "激活" -#: plinth/modules/networks/templates/connections_list.html:108 +#: plinth/modules/networks/templates/connections_list.html:107 msgid "Inactive" msgstr "未激活" +#: plinth/modules/networks/templates/connections_list.html:124 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:129 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:137 +#, python-format +msgid "" +"Your %(box_name)s gets its internet from your Router via WiFi or Ethernet " +"cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:145 +#: plinth/modules/networks/templates/connections_list.html:147 +#, fuzzy +#| msgid "Update" +msgid "Update..." +msgstr "更新" + #: plinth/modules/networks/templates/connections_type_select.html:34 msgid "Create..." msgstr "创建..." +#: plinth/modules/networks/templates/router_configuration_content.html:25 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "Setup %(box_name)s Behind a Router" +msgstr "%(box_name)s 安装程序" + +#: plinth/modules/networks/templates/router_configuration_content.html:31 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:38 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:47 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options, to overcome this limitation, choose 'no public address' option " +"in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:57 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:69 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:33 +msgid "skip this step" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_firstboot.html:35 +msgid "Next" +msgstr "" + #: plinth/modules/openvpn/__init__.py:39 plinth/modules/openvpn/manifest.py:33 #, fuzzy #| msgid "Open" @@ -3771,6 +3912,7 @@ msgid "OpenVPN" msgstr "打开" #: plinth/modules/openvpn/__init__.py:43 +#: plinth/modules/wireguard/__init__.py:40 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" @@ -4408,113 +4550,6 @@ msgstr "" msgid "Access rights configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/repro/__init__.py:40 -msgid "repro" -msgstr "" - -#: plinth/modules/repro/__init__.py:42 -#, fuzzy -#| msgid "DNS Server" -msgid "SIP Server" -msgstr "DNS 服务器" - -#: plinth/modules/repro/__init__.py:45 -msgid "" -"repro provides various SIP services that a SIP softphone can utilize to " -"provide audio and video calls as well as presence and instant messaging. " -"repro provides a server and SIP user accounts that clients can use to let " -"their presence known. It also acts as a proxy to federate SIP " -"communications to other servers on the Internet similar to email." -msgstr "" -"Repro 提供了一个 SIP 软电话可以用来提供音频和视频呼叫以及在线和即时消息等各" -"种 SIP 服务。Repro 提供一个服务器和 SIP 用户帐户,客户端可以在上线时知道。它" -"还可以充当代理以将 SIP 通信联合到互联网上类似于电子邮件的其他服务器。" - -#: plinth/modules/repro/__init__.py:51 -msgid "" -"To make SIP calls, a client application is needed. Available clients include " -"Jitsi (for computers) and CSipSimple (for Android phones)." -msgstr "" -"要进行SIP呼叫,需要客户端应用程序。可用的客户端程序包括 Jitsi(适用于电脑)和 CSipSimple(适用于 Android 手" -"机)。" - -#: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." -msgid "" -"Note: Before using repro, domains and users will need to " -"be configured using the web-based configuration panel. Users in the admin " -"group will be able to log in to the repro configuration panel. After setting " -"the domain, it is required to restart the repro service. Disable the service " -"and re-enable it." -msgstr "" -"请注意:在使用 Repro 前,需要使用 Web 配置面板配置域名和用户。admin 组中的用户将能够登录到 " -"Repro 配置面板。设置域名后,需要重新启动 Repro 服务。禁用服务并重新启用既可。" - -#: plinth/modules/repro/manifest.py:30 -msgid "Jitsi Meet" -msgstr "" - -#: plinth/modules/repro/manifest.py:32 -msgid "" -"Jitsi is a set of open-source projects that allows you to easily build and " -"deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " -"Videobridge and Jitsi Meet, which let you have conferences on the internet, " -"while other projects in the community enable other features such as audio, " -"dial-in, recording, and simulcasting." -msgstr "" - -#: plinth/modules/repro/manifest.py:69 -msgid "CSipSimple" -msgstr "" - -#: plinth/modules/restore/__init__.py:37 plinth/modules/restore/manifest.py:23 -msgid "reStore" -msgstr "reStore" - -#: plinth/modules/restore/__init__.py:39 -#, fuzzy -#| msgid "" -#| "Unhosted Storage \n" -#| " (reStore)" -msgid "Unhosted Storage" -msgstr "" -"未托管存储\n" -"(reStrore)" - -#: plinth/modules/restore/__init__.py:43 -#, python-brace-format -msgid "" -"reStore is a server for unhosted web " -"applications. The idea is to uncouple web applications from data. No " -"matter where a web application is served from, the data can be stored on an " -"unhosted storage server of user's choice. With reStore, your {box_name} " -"becomes your unhosted storage server." -msgstr "" -"reStore 是未托管网络应用程序的服务器。这" -"个想法是将 Web 应用程序与数据断开连接。无论从哪个 Web 应用程序提供服务,数据" -"都可以存储在用户选择的非主机存储服务器上。使用reStore,您的 {box_name} 将成为" -"您的未托管存储服务器。" - -#: plinth/modules/restore/__init__.py:49 -msgid "" -"You can create and edit accounts in the reStore web-" -"interface." -msgstr "" -"您可以在 reStrore 的 web 界面 中创建和编辑帐户 。" - #: plinth/modules/roundcube/__init__.py:35 #: plinth/modules/roundcube/manifest.py:24 #, fuzzy @@ -4626,7 +4661,7 @@ msgstr "共享" #: plinth/modules/samba/templates/samba.html:41 msgid "" -"Note: only specially created directories will be shared on selected disks, " +"Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" @@ -4642,7 +4677,7 @@ msgid "Used" msgstr "已使用" #: plinth/modules/samba/templates/samba.html:72 -msgid "vfat partitions are not supported" +msgid "VFAT partitions are not supported" msgstr "" #: plinth/modules/samba/templates/samba.html:103 @@ -4659,7 +4694,7 @@ msgstr "" #: plinth/modules/samba/templates/samba.html:113 msgid "" -"Users who need to re-enter their password on the password change page to " +"Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" @@ -4687,13 +4722,13 @@ msgstr "共享" msgid "Action" msgstr "行动" -#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:158 +#: plinth/modules/samba/views.py:61 plinth/modules/storage/forms.py:164 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "添加服务" -#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:156 +#: plinth/modules/samba/views.py:62 plinth/modules/storage/forms.py:162 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5511,47 +5546,47 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/forms.py:75 +#: plinth/modules/storage/forms.py:79 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "无效的主机名" -#: plinth/modules/storage/forms.py:91 +#: plinth/modules/storage/forms.py:97 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:93 +#: plinth/modules/storage/forms.py:99 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "下载目录" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:102 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:99 +#: plinth/modules/storage/forms.py:105 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:104 +#: plinth/modules/storage/forms.py:110 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "下载目录" -#: plinth/modules/storage/forms.py:107 +#: plinth/modules/storage/forms.py:113 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:154 +#: plinth/modules/storage/forms.py:160 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "共享" -#: plinth/modules/storage/forms.py:162 +#: plinth/modules/storage/forms.py:168 msgid "Other directory (specify below)" msgstr "" @@ -5933,10 +5968,6 @@ msgstr "" "BitTorrent 是对等文件共享协议。Transmission 守护进程处理 Bitorrent 文件共享。" "请注意,BitTorrent 不是匿名。" -#: plinth/modules/transmission/forms.py:35 -msgid "Download directory" -msgstr "下载目录" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" @@ -6288,11 +6319,400 @@ msgstr "更改密码" msgid "Password changed successfully." msgstr "已成功更改密码。" -#: plinth/network.py:41 +#: plinth/modules/wireguard/__init__.py:38 +#: plinth/modules/wireguard/manifest.py:29 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/wireguard/__init__.py:43 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:45 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:49 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:47 +#, fuzzy +#| msgid "Invalid kite name" +msgid "Invalid key." +msgstr "无效的 Kite 名称" + +#: plinth/modules/wireguard/forms.py:76 +#: plinth/modules/wireguard/templates/wireguard.html:32 +#: plinth/modules/wireguard/templates/wireguard.html:89 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:38 +#, fuzzy +#| msgid "Publish Key" +msgid "Public Key" +msgstr "发布密钥" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:85 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:86 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:91 +#, fuzzy +#| msgid "Published key to keyserver." +msgid "Public key of the server" +msgstr "已发布到密钥服务器的密钥。" + +#: plinth/modules/wireguard/forms.py:92 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:97 +#, fuzzy +#| msgid "A list of IP addresses, separated by space" +msgid "Client IP address provided by server" +msgstr "IP 地址列表,用空格分隔" + +#: plinth/modules/wireguard/forms.py:98 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:104 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:113 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:114 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:120 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:122 +msgid "Typically checked for a VPN service though which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:25 +#, fuzzy +#| msgid "Web Server" +msgid "As a Server" +msgstr "Web 服务器" + +#: plinth/modules/wireguard/templates/wireguard.html:27 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:33 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:34 +#: plinth/modules/wireguard/templates/wireguard.html:90 +#, fuzzy +#| msgid "Create Connection" +msgid "Last Connected Time" +msgstr "创建连接" + +#: plinth/modules/wireguard/templates/wireguard.html:53 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:62 +#, python-format +msgid "" +"\n" +" Public key for this %(box_name)s:\n" +" " +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:68 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:72 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/views.py:69 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:79 +#, fuzzy +#| msgid "" +#| "Chat Client \n" +#| " (JSXC)" +msgid "As a Client" +msgstr "" +"聊天客户端\n" +"(JSXC)" + +#: plinth/modules/wireguard/templates/wireguard.html:81 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:88 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:111 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "No connections to remote servers are configured yet." +msgstr "远程服务器认证失败。" + +#: plinth/modules/wireguard/templates/wireguard.html:119 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:123 +#: plinth/modules/wireguard/views.py:178 +#, fuzzy +#| msgid "Add Connection" +msgid "Add Connection to Server" +msgstr "添加连接" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:34 +#, fuzzy +#| msgid "Quassel IRC Client" +msgid "Add Client" +msgstr "Quassel IRC 客户端" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this client?" +msgstr "你确定你想移除这一项存储吗?" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29 +#, fuzzy +#| msgid "Are you sure that you want to remove this repository?" +msgid "Are you sure that you want to delete this server?" +msgstr "你确定你想移除这一项存储吗?" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34 +#, fuzzy +#| msgid "" +#| "Chat Client \n" +#| " (JSXC)" +msgid "Update Client" +msgstr "" +"聊天客户端\n" +"(JSXC)" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:34 +#, fuzzy +#| msgid "Create Connection" +msgid "Update Connection" +msgstr "创建连接" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:27 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:35 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:39 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:43 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:46 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:47 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoints:" +msgstr "服务器域" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:55 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:42 +#, fuzzy +#| msgid "Select verified SSH public key" +msgid "Server public key:" +msgstr "选择经过验证的 SSH 公钥" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:65 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:64 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:69 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:68 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:72 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:29 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:38 +#, fuzzy +#| msgid "Server domain" +msgid "Server endpoint:" +msgstr "服务器域" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:50 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:54 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:64 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:79 plinth/modules/wireguard/views.py:138 +#, fuzzy +#| msgid "This service already exists" +msgid "Client with public key already exists" +msgstr "此服务已存在" + +#: plinth/modules/wireguard/views.py:92 +#, fuzzy +#| msgid "" +#| "Email Client \n" +#| " (Roundcube)" +msgid "Allowed Client" +msgstr "" +"邮件客户端\n" +"(Roundcube)" + +#: plinth/modules/wireguard/views.py:114 +#, fuzzy +#| msgid "Update setup" +msgid "Updated client." +msgstr "更新安装程序" + +#: plinth/modules/wireguard/views.py:119 +#, fuzzy +#| msgid "" +#| "Email Client \n" +#| " (Roundcube)" +msgid "Modify Client" +msgstr "" +"邮件客户端\n" +"(Roundcube)" + +#: plinth/modules/wireguard/views.py:152 +#, fuzzy +#| msgid "Delete" +msgid "Delete Allowed Client" +msgstr "删除" + +#: plinth/modules/wireguard/views.py:161 +#, fuzzy +#| msgid "Archive deleted." +msgid "Client deleted." +msgstr "归档已删除。" + +#: plinth/modules/wireguard/views.py:163 +#, fuzzy +#| msgid "Repository not found" +msgid "Client not found" +msgstr "找不到存储库" + +#: plinth/modules/wireguard/views.py:173 +#, fuzzy +#| msgid "Added custom service" +msgid "Added new server." +msgstr "已添加的自定义服务" + +#: plinth/modules/wireguard/views.py:194 +#, fuzzy +#| msgid "Connection Type" +msgid "Connection to Server" +msgstr "连接类型" + +#: plinth/modules/wireguard/views.py:212 +#, fuzzy +#| msgid "Update setup" +msgid "Updated server." +msgstr "更新安装程序" + +#: plinth/modules/wireguard/views.py:217 +#, fuzzy +#| msgid "Edit Connection" +msgid "Modify Connection to Server" +msgstr "编辑连接" + +#: plinth/modules/wireguard/views.py:254 +#, fuzzy +#| msgid "Delete Connection" +msgid "Delete Connection to Server" +msgstr "删除连接" + +#: plinth/modules/wireguard/views.py:274 +#, fuzzy +#| msgid "{name} deleted." +msgid "Server deleted." +msgstr "{name} 已删除。" + +#: plinth/network.py:42 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:42 +#: plinth/network.py:43 msgid "Generic" msgstr "通用" @@ -6667,6 +7087,85 @@ msgstr "应用程序已禁用" msgid "Gujarati" msgstr "古吉拉特语" +#, fuzzy +#~| msgid "DNS Server" +#~ msgid "SIP Server" +#~ msgstr "DNS 服务器" + +#~ msgid "" +#~ "repro provides various SIP services that a SIP softphone can utilize to " +#~ "provide audio and video calls as well as presence and instant messaging. " +#~ "repro provides a server and SIP user accounts that clients can use to let " +#~ "their presence known. It also acts as a proxy to federate SIP " +#~ "communications to other servers on the Internet similar to email." +#~ msgstr "" +#~ "Repro 提供了一个 SIP 软电话可以用来提供音频和视频呼叫以及在线和即时消息等" +#~ "各种 SIP 服务。Repro 提供一个服务器和 SIP 用户帐户,客户端可以在上线时知" +#~ "道。它还可以充当代理以将 SIP 通信联合到互联网上类似于电子邮件的其他服务" +#~ "器。" + +#~ msgid "" +#~ "To make SIP calls, a client application is needed. Available clients " +#~ "include Jitsi (for computers) and " +#~ "CSipSimple (for Android phones)." +#~ msgstr "" +#~ "要进行SIP呼叫,需要客户端应用程序。可用的客户端程序包括 Jitsi(适用于电脑)和 CSipSimple(适用于 Android 手" +#~ "机)。" + +#, fuzzy +#~| msgid "" +#~| "Note: Before using repro, domains and users will need " +#~| "to be configured using the web-based " +#~| "configuration panel. Users in the admin group will be able " +#~| "to log in to the repro configuration panel. After setting the domain, it " +#~| "is required to restart the repro service. Disable the service and re-" +#~| "enable it." +#~ msgid "" +#~ "Note: Before using repro, domains and users will need " +#~ "to be configured using the web-based configuration panel. Users in the " +#~ "admin group will be able to log in to the repro configuration " +#~ "panel. After setting the domain, it is required to restart the repro " +#~ "service. Disable the service and re-enable it." +#~ msgstr "" +#~ "请注意:在使用 Repro 前,需要使用 Web 配置面板配置域名和用户。admin 组中的用户将" +#~ "能够登录到 Repro 配置面板。设置域名后,需要重新启动 Repro 服务。禁用服务并" +#~ "重新启用既可。" + +#~ msgid "reStore" +#~ msgstr "reStore" + +#, fuzzy +#~| msgid "" +#~| "Unhosted Storage \n" +#~| " (reStore)" +#~ msgid "Unhosted Storage" +#~ msgstr "" +#~ "未托管存储\n" +#~ "(reStrore)" + +#~ msgid "" +#~ "reStore is a server for unhosted web " +#~ "applications. The idea is to uncouple web applications from data. No " +#~ "matter where a web application is served from, the data can be stored on " +#~ "an unhosted storage server of user's choice. With reStore, your " +#~ "{box_name} becomes your unhosted storage server." +#~ msgstr "" +#~ "reStore 是未托管网络应用程序的服务器。" +#~ "这个想法是将 Web 应用程序与数据断开连接。无论从哪个 Web 应用程序提供服务," +#~ "数据都可以存储在用户选择的非主机存储服务器上。使用reStore,您的 " +#~ "{box_name} 将成为您的未托管存储服务器。" + +#~ msgid "" +#~ "You can create and edit accounts in the reStore web-" +#~ "interface." +#~ msgstr "" +#~ "您可以在 reStrore 的 web 界面 中创建和编辑帐户 。" + #~ msgid "Module: %(module)s" #~ msgstr "模块:%(module)s" @@ -6946,11 +7445,6 @@ msgstr "古吉拉特语" #~ msgid "Delete Snapshot #%(number)s" #~ msgstr "删除快照 #%(number)s" -#, fuzzy -#~| msgid "Delete" -#~ msgid "Delete All" -#~ msgstr "删除" - #~ msgid "Delete snapshot #%(number)s" #~ msgstr "删除快照 #%(number)s" @@ -7096,9 +7590,6 @@ msgstr "古吉拉特语" #~ msgid "Enable forwarding on your BIND server" #~ msgstr "在你的 BIND 服务器上启用转发" -#~ msgid "A list of IP addresses, separated by space" -#~ msgstr "IP 地址列表,用空格分隔" - #~ msgid "Set forwarding configuration updated" #~ msgstr "设置转发配置已更新" @@ -7209,9 +7700,6 @@ msgstr "古吉拉特语" #~ msgid "Go to Apps" #~ msgstr "转到应用程序" -#~ msgid "Current Network Configuration" -#~ msgstr "当前的网络配置" - #~ msgid "" #~ "You should check the network setup and modify it if necessary. Do not " #~ "forget to change the default Wi-Fi passwords!" From bab4f10c880590b70b8518e94df85c8c7fe6d96e Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 19:22:45 -0500 Subject: [PATCH 83/87] 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 | 2 +- doc/manual/en/MediaWiki.raw.xml | 2 +- doc/manual/en/Minetest.raw.xml | 2 +- doc/manual/en/MiniDLNA.raw.xml | 2 +- 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 | 89 +++++++++++++++++++-- doc/manual/en/images/mediawiki-toolbar.png | Bin 0 -> 10416 bytes 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 | 2 +- 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 | 2 +- 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 | 76 +++++++++++++++++- 95 files changed, 248 insertions(+), 101 deletions(-) create mode 100644 doc/manual/en/images/mediawiki-toolbar.png diff --git a/doc/manual/en/Apache_userdir.raw.xml b/doc/manual/en/Apache_userdir.raw.xml index dd14697f2..427176e67 100644 --- a/doc/manual/en/Apache_userdir.raw.xml +++ b/doc/manual/en/Apache_userdir.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 efb82342d..3215ab736 100644 --- a/doc/manual/en/Backups.raw.xml +++ b/doc/manual/en/Backups.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 a2d39083f..55eb5c9ba 100644 --- a/doc/manual/en/Cockpit.raw.xml +++ b/doc/manual/en/Cockpit.raw.xml @@ -1,3 +1,3 @@
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: Sunday, January 26th at 17: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, February 8th 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 3418095dd..94658de57 100644 --- a/doc/manual/en/Configure.raw.xml +++ b/doc/manual/en/Configure.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b848a9e98..56ea0d5a4 100644 --- a/doc/manual/en/Coquelicot.raw.xml +++ b/doc/manual/en/Coquelicot.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 0a640bb5b..fca3bc155 100644 --- a/doc/manual/en/DateTime.raw.xml +++ b/doc/manual/en/DateTime.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 26dcce394..4423c5433 100644 --- a/doc/manual/en/Deluge.raw.xml +++ b/doc/manual/en/Deluge.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b7f14aa49..b001ae2a8 100644 --- a/doc/manual/en/Diagnostics.raw.xml +++ b/doc/manual/en/Diagnostics.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 8c02efe6c..0c852205a 100644 --- a/doc/manual/en/DynamicDNS.raw.xml +++ b/doc/manual/en/DynamicDNS.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 36b73abfa..a828f31a1 100644 --- a/doc/manual/en/Firewall.raw.xml +++ b/doc/manual/en/Firewall.raw.xml @@ -10,4 +10,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: Sunday, January 26th at 17: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, February 8th 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 cbda2e69c..b26edf492 100644 --- a/doc/manual/en/GitWeb.raw.xml +++ b/doc/manual/en/GitWeb.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/GitWeb62020-01-27 12:42:43VeikoAasa52020-01-27 09:50:21VeikoAasa42019-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
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. For this reason, you should create a FreedomBox user who has only access to the gitweb and not to use an admin account.
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, February 8th 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 b91d369a8..0ffa333f7 100644 --- a/doc/manual/en/I2P.raw.xml +++ b/doc/manual/en/I2P.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 8bc9707b6..dc684a014 100644 --- a/doc/manual/en/Ikiwiki.raw.xml +++ b/doc/manual/en/Ikiwiki.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 e42c3552b..40a08c9d4 100644 --- a/doc/manual/en/Infinoted.raw.xml +++ b/doc/manual/en/Infinoted.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 2b8118c55..0ebfb66c1 100644 --- a/doc/manual/en/LetsEncrypt.raw.xml +++ b/doc/manual/en/LetsEncrypt.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d2f483627..3219a8328 100644 --- a/doc/manual/en/MLDonkey.raw.xml +++ b/doc/manual/en/MLDonkey.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 7256a5997..c883edb5e 100644 --- a/doc/manual/en/MatrixSynapse.raw.xml +++ b/doc/manual/en/MatrixSynapse.raw.xml @@ -4,4 +4,4 @@ chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secr 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: If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. In order to grant such privileges to username run the following commands 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: Sunday, January 26th at 17: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 "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3 /var/lib/matrix-synapse/homeserver.db ]]>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, February 8th 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 9fc5372c0..98ec78b7f 100644 --- a/doc/manual/en/MediaWiki.raw.xml +++ b/doc/manual/en/MediaWiki.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/MediaWiki132020-01-24 11:40:30JosephNuthalapatiAdd screenshot of editor toolbar122020-01-24 11:38:30JosephNuthalapatiMention the default wiki editor in "Editing Wiki content"112020-01-21 08:09:53fioddorCustomization section moved at the end because the others are more generic.102020-01-18 09:41:15JosephNuthalapatiAdd customization section92018-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 app page in web interface.
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 ContentThe MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. mediawiki-toolbar.png
Visual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in 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.
Customization
SkinsMediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. 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, February 8th 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 efc602391..e7d0dfe42 100644 --- a/doc/manual/en/Minetest.raw.xml +++ b/doc/manual/en/Minetest.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 index 14f3e883e..25222a2a0 100644 --- a/doc/manual/en/MiniDLNA.raw.xml +++ b/doc/manual/en/MiniDLNA.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/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, February 8th 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 3c31ef35d..66f89324d 100644 --- a/doc/manual/en/Monkeysphere.raw.xml +++ b/doc/manual/en/Monkeysphere.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 6309a346a..38470bec0 100644 --- a/doc/manual/en/Mumble.raw.xml +++ b/doc/manual/en/Mumble.raw.xml @@ -1,2 +1,2 @@
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: Sunday, January 26th at 17: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, February 8th 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 c6b381001..059adf111 100644 --- a/doc/manual/en/NameServices.raw.xml +++ b/doc/manual/en/NameServices.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 783c5a924..93fae8fc0 100644 --- a/doc/manual/en/Networks.raw.xml +++ b/doc/manual/en/Networks.raw.xml @@ -2,4 +2,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: Sunday, January 26th at 17: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, February 8th 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 9479d302b..5acb0d021 100644 --- a/doc/manual/en/OpenVPN.raw.xml +++ b/doc/manual/en/OpenVPN.raw.xml @@ -1,4 +1,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: Sunday, January 26th at 17: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, February 8th 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 ae5b0c68f..3e52e8d36 100644 --- a/doc/manual/en/PageKite.raw.xml +++ b/doc/manual/en/PageKite.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d29a66ca9..7dee7ded2 100644 --- a/doc/manual/en/Power.raw.xml +++ b/doc/manual/en/Power.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 1d0aebe7c..8fa77778e 100644 --- a/doc/manual/en/Privoxy.raw.xml +++ b/doc/manual/en/Privoxy.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 9f1d9b3af..9cb1211d9 100644 --- a/doc/manual/en/Quassel.raw.xml +++ b/doc/manual/en/Quassel.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 9da5d50fe..4cce8e916 100644 --- a/doc/manual/en/Radicale.raw.xml +++ b/doc/manual/en/Radicale.raw.xml @@ -22,4 +22,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: Sunday, January 26th at 17: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, February 8th 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 c91e2c88d..bb9328164 100644 --- a/doc/manual/en/Repro.raw.xml +++ b/doc/manual/en/Repro.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 983a4ee0a..b55cc2b14 100644 --- a/doc/manual/en/Roundcube.raw.xml +++ b/doc/manual/en/Roundcube.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 64a786042..1fa913bc4 100644 --- a/doc/manual/en/Searx.raw.xml +++ b/doc/manual/en/Searx.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 ddca966ab..bf071bc06 100644 --- a/doc/manual/en/SecureShell.raw.xml +++ b/doc/manual/en/SecureShell.raw.xml @@ -1,4 +1,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: Sunday, January 26th at 17: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, February 8th 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 1afbc101f..33a533bd0 100644 --- a/doc/manual/en/Security.raw.xml +++ b/doc/manual/en/Security.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 64936bfc5..24679ced2 100644 --- a/doc/manual/en/ServiceDiscovery.raw.xml +++ b/doc/manual/en/ServiceDiscovery.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 bfde58917..dbbae3793 100644 --- a/doc/manual/en/Shadowsocks.raw.xml +++ b/doc/manual/en/Shadowsocks.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b0fc1c8d0..c7ebc0d5b 100644 --- a/doc/manual/en/Snapshots.raw.xml +++ b/doc/manual/en/Snapshots.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 96ce195e5..a44a47d83 100644 --- a/doc/manual/en/Storage.raw.xml +++ b/doc/manual/en/Storage.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 4caef63c3..67a9426b3 100644 --- a/doc/manual/en/Syncthing.raw.xml +++ b/doc/manual/en/Syncthing.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d6a014f21..3ad0cbfa5 100644 --- a/doc/manual/en/TinyTinyRSS.raw.xml +++ b/doc/manual/en/TinyTinyRSS.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 fc072669a..ad4377b62 100644 --- a/doc/manual/en/Tor.raw.xml +++ b/doc/manual/en/Tor.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 59b3ed52e..c1f0559ed 100644 --- a/doc/manual/en/Transmission.raw.xml +++ b/doc/manual/en/Transmission.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 5f8ef0640..c70b69cb6 100644 --- a/doc/manual/en/Upgrades.raw.xml +++ b/doc/manual/en/Upgrades.raw.xml @@ -5,4 +5,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: Sunday, January 26th at 17: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, February 8th 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 4c62d7903..b1a8c3862 100644 --- a/doc/manual/en/Users.raw.xml +++ b/doc/manual/en/Users.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b88d32277..2af1ea288 100644 --- a/doc/manual/en/ejabberd.raw.xml +++ b/doc/manual/en/ejabberd.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 fddd23b40..85d93d708 100644 --- a/doc/manual/en/freedombox-manual.raw.xml +++ b/doc/manual/en/freedombox-manual.raw.xml @@ -2563,17 +2563,17 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
Access - GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb + GitWeb can be accessed after installation e.g. by the web client through
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. + Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and not to use an admin account.
Mirroring @@ -3018,7 +3018,7 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc MediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki.
User management - Users can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki page in the Plinth UI. + Users can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface.
Use cases @@ -3050,11 +3050,22 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
Editing Wiki Content + The MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. + + + + + + + mediawiki-toolbar.png + + +
Visual Editor - MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. Unfortunately, it is not yet available in the current version of MediaWiki on Debian. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki. + MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki.
@@ -3075,6 +3086,15 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
+
+ Customization +
+ Skins + MediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. + Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. + Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. +
+
@@ -10036,6 +10056,65 @@ 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 20.1 (2020-01-27) + + + deluge: Allow to set a download directory + + + deluge: Fix installation failure on slow machine + + + storage: Make external disk mounts accessible to other users + + + gitweb: Add link to the manual page + + + style: Fix incorrect margins for containers in mobile view + + + style: Fix responsiveness for app header + + + network: Fix activating connections that don't have real devices + + + wireguard: Add WireGuard VPN app + + + networks: Add router configuration page + + + networks: Add first boot step for router config helper + + + bind: Enable sandboxing for bind service + + + Translated using Weblate (Dutch) + + + Translated using Weblate (Norwegian Bokmål) + + + Translated using Weblate (German) + + + Translated using Weblate (Spanish) + + + Translated using Weblate (Swedish) + + + Translated using Weblate (French) + + + Translated using Weblate (Greek) + + +
FreedomBox 20.0 (2020-01-13) diff --git a/doc/manual/en/images/mediawiki-toolbar.png b/doc/manual/en/images/mediawiki-toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..8f976caa19b2caac9b24aebecf0ca04163edbc16 GIT binary patch literal 10416 zcmb_?1y>wP7cGGVcbf_B1ZN;vu;A|Q4#6$B1-HS11$PVX?oN;(!CjKz?)I8{@Auvx zc(v9{_o}L{u0FNvoPBn8xT3rS8ZrSg3=9mKl%%LK3=FI|aIS#}5BzToMR>u$kikfa z3aPrMA7;2|s=9SN9~(SnuH64vS!w0cv0HkGhFG`R{d_kZwGfpW6c#L*4>l=-gsD~= zOH^wd5aSU_AFJ)cP6-tt<70yFM!QB?Q?HL>Qh3I@P-S`81J7>xCiXqjZ+#~kvz+zQ zHy?1`{jb2lJkMN5raxc@kRb+;g&BowLp*Qy@Psg53t{$E1@?u#R3i#UYeT+vc#6H$ zzJ?qqGKjac7@%2yLVam8b{96zhbMr083CMGj7J%Mu~QW?@a5&o5L&B#Nk$)@vK+`i z<8L5^#}WMRvRrkjXgf=h z$^PHghku0?CBeG7D>HT`N7aO3d4th`Mqoy*7S+;+-4rcDFuZVF-+}F1vPfu5*J}6V z!QtP7qy9|7ohr?wptZ#ylY^<(jLXiX9*MRzwu22a7$?CN-)Cik-bhCpbvZgVPYvKeEOl~j0__6M!*-8qO}`4&{hHMjtdOcv_}c4mR&=ZW z;-c${=ui6K2cv$jnYF5N^7xe1@o0O~w1w{hu&tIg#C zx)*}P`~t7xSj%M-u0x_3a7-T!hukiXAmiiXgE_2l_tM-0e=EdC#(kuMcr9J-Wa~ml zSEApv9&fE3<~cCd5tLB#i7tEj-?loP7V#)G87!FBxCWWdn9N-|m7g>8NoKX+8k-(f zAIo^Y#h@$`{@LT_Ja_r=U7w_0sxY*UX+Ptw5#pE)t5+7{mf?GdG7XKu6DYVgF=`+cXlxJ2)VoDcoh7)$KOR2po&4{=KHyaBCA#iADq$d z)5(`yq1(^3CL0(W{05&zD?+E69DvIM2_)(9Ac*w$gvPKR3l|1zZ+2B3Dsh0_!HOS@ zN|A5)WS+!UL7x<-y^$21cnnEY-Kf{i%~lM=XMiJ(7A z=L7QAKvZuG3MjX%EkLfa#47@ix#HU=%ka~!!CsGGl+5-|#?wo;!Zzm%(G$;4Zr*pD z&yi?poJMn*?Nx3L>z^4-w(1RjtYFiT@E`UdmSW!M`^>PEXSWc$MWg~Yrf6)#>rBOu z$iDbv=o{8=ZyvlAk2f4Pq`a~=Av(LhwKIG(R_5Sc_Z|zhWu-QSLfUAuc=x%@nlQYR zNvbcpG=>cK$5aCXUmqxw&Sn)_gYVr=gXVX`jQ#SPo-NADF3gb2I?C`@D~jN_vdwNm zhgaJKMn#nNi;hXA-D>3Axanbk6CATtU$JIxLgT8(5;~C>db5=-nIO0?+^QH51sY*B zSAu=nAsG05CV%QBwCfq(*OCAT)MW0T%h93e&&V~G)k}<6n~3f*=!ofFWT#$_^jtXe zwZMtKX%qK8P78!Ynx2!!-^0c)A8o$eva%U+!mS@xk*ObLVir+9%M@oEq=xt){C%dd zor?v3f4oEBNMrVVqlusJc>^;_a6CL{>&j+^17+cJ3iwwZa8Ea#nyMokBpWV^4ZS7F zhwEi9Bk#AE-||>RJ~XnS+7N8%eC<4LNQHiDg+XfVSH>BB`=2GcwhNoJ8RdbcY%XsD zeGo7#snPGzNdgpe>79J0>xiu@)@$VDmKg4=q0L+g6(kTw!Q0n_oc1A#6#b_vMcu5Z z^rUmu9?S;qAxe4T8(lfQl4EV5?e`e#y%>V8ds+YPVNp`?!5()$3uJO|)-KtswxHG8 z*pMYiR$EW#dtXdSG`X^4?p`}N3?07%hX`$E;385h<0d2+Zx6-Y?3Gqxy(J92@Zz~~ z+z^JoWrsfuumjo;R$DP}Xyio=6Bro0@Le zX~VzlgtzP#Io0*V!r{1fB$?k>jbJNQo5FcZb{({jpaA@PSG)bEPnWBV;EcC$J};X8 z4nc)hA$OOdrJSIYi2JG$zTOnLH}PN)*9=~dai(y5Uq^6yE2rtoN(wA^ta48vV2dZ6 z#GC2#cj?h(LfV!n(ZOn4z!K<&l?N+Qi0Rd09xsX;KON~(ZF6l%I^aEBE+M*Su>fts zF}lzoY`V;b&s%Ps8xHfCQQww9O&L!_I7zfy&eyFrX}HGu6$*jBTv&^-JL{1KlS`)^ z8oz~}l)-z~F(LtIw$|$$8<2&%Nr%)LykaA5$gV8{?T;s|U)NGPaNa?_My6IDj)(xy zBV_8@n|-*4eMxcTO9?zmc7s&dc&5H7->2@%a*^u(=U2+o?oBCosD3(M!>I4i=UpGh zX^66#SGqT{>2dk&2DijtJ(-z<@sEFq2>arUi~d@lo6VW`E1f#9wgr&Nr+`b|T-;3R z*AUawQd_g-YZ8ihJQf)osKB{-o`&hxiN#6C4#XZd{m)@!2}6DFsA@@s!)2kqw!{%y zglt&AR!GL#J4rq^VeRGZJs9K`7MzKU)BMgsZ#+Y5d%5URsgV95p#%l_R#~I7;}b9Z zq$85eGi;!+;&qu2b$fF;j=vDOP3GUG*X2|2gx2GIlA*W18X2E|yb{mw6On9-hYc}` z%}j*L(Tq6T8w5O~@1T5@N5_pZTf?1=#=^MuFM<@XOXTDtUDtfIiQ~?q3u3?Wi5FGX z!#0lYNhd0B-TF_5J{qd(C1lZdz~2oQf^d@qjKDz>{cZYw9>KtnG2gAatdD#CPUboC zawo`D+FSW=EjLR_P4uNWgILW*RDtnqJb60_Up#1{^_4H5u)Q(2<4)n7~l+ruiR z#(f*^cJoymmq;={Y(KPmInq_2qn~w-O90@TxKeW9*ABazC0TIi`x-tOw@#mE+o_!a z-&%f6hAVR#dQ9O6X;7#3xxRFI*zsCuvTM-{dDcpY@txSefNP{b-8#C*j3_v1rT|e^ zQ{-fQY1*lTP8>+Aj?+*L@5RMB&PzExLY zKrTLVsW0ap5DWDzsHf@o;}-2@$(Js5El3)&E8uX8Ajkb7e}tiYn1C1 zowc7yJ>Qf}e@HA*c+{QEIRwAUXJmb6+T{(}aaupvTx5}h$nQL|VrF;cuQ6S5^$uhhc`F`B7){%O=l zMdfbd)-y8;@HWCWOtXLo+KMK6aFnNdG6nS) z0(44G3-C1SuG9mJ%EVdIaUAY`zUi}kJSl-%hK;4-F5bAZGQn(8ycjvNDupxVj1%4fwBl-){WpM4S;wO$MWXy~DeuHd}W= zHZ}gtrDnGD_ePWzH89$)x{Nq{_+~v2_F z%OC9esMq?3;wUGls1F)5G6La>&U5yObme@Ji$rd%rkMwR83B%UB-3?+gh8B`-s9?x z`sU-U`aw`u0oQ0Y0jBeFlV%oQoE5Y-p;?Xrl_YF9)nPs#VMhJ3 zkamDnpkI^J8;@?jCPFWn`mTozQHG}MM3~xiTzowI=6Z1vz><{l0H=~w%JhSF9jik> zBjov94zX<_In|~7w4V*=E@puHGNtM>RY=)ve(9lG=||X(n|km|YwCX5bmgdD8nM6g zWDL(Cmk|Nr?Ta<6;dzY~7kJ6oIQ5Iz>UVx08a8B3ok@?6{BlLrgjgMdS<9>Ix9UG$ z409=_a+(moC9GsapDvu}BI5N*c6i=(rt)2x~x8d#}Hat%8HBfgLK;q431k3zJx3}qZ z3oFYzIb#W+H{`6`2`de?I#30HN8CTm`mhEwk!=*s;Py}E=c;@a@!?8l90cyRFPV)n zW$ye1ygng~LP|t-72f8nRx zM7kxwj*mz)GoB&WnTxz$8JsJfR$cVq*hPBUhzsEKf9h|+XxP<8QZ zet-cef%5J6jCB;tUShaX)!liY*V*`NCkqZxQk)|doO0zwdok-K!>d+R^_7^tmS*}%d<})_!$>`>2 zHZ3#4;6krKcy%B+lr&-1ycq4D>jz>+_?u8Tiq<>>bou33hDXHjp?#=XOt??zvn{m* znO29sx2?patoWm!@`;)!B3kCBRoa_K{4Hw+hI-3$-)}Ke@d6SSF|VIq)r3}J+!Bj< zx-v%-3BLNFAn>Y}^%E#!-gef0IS2`dcC&VZCMQn^%B;k)7)+t5so6E`@x}>7CN?!O zs^Ew300OD^mvRB#pHtL*KFwf$pUKfAwF)Y6yoAH9*WrXB>${rUX$gU z)8bNlQHD;!_#)ZhLpNv4usX zfcyg`gdLnj&hwwEOx<-ZZ{6oOu?1dXU?n^e<)mEBJMF&mWoIBtV;11H3%_y#xvA={h4VyH=XP~4v$AF+iHy)nwlI>(-4AZHg;5uOqX1l z85HYgaLN9hq03=%WZW4i?T&H2?IYk{NPYnE%;-2iYBaQ5lF_E;V5}xIfL{UEe-MPR zSW&0EfR{JlCjP$eIy<|N_?eF%H}Yy#LRbh#UVP>sZgj<9xc`_T$8A^0XCk;3hvI*I z%a)&b=5RQ!qFEssGFB*CTT#zEX$?_Mz5-CC=`8NLY>y{-G8cUMZQB)Oq;=Vpa)z43 z@D+0ON3_mO<|p;na3#e%=g;A$#uva=_}0#Y0^k}^(i7HPpRq$fe*CsNniUODM^t7? zIYx|UxR@w7Gvx&Rcs>?6)puKueNd-wV$@iIC?2f^GiWG1*6G_WMrC8ZuX8Q7S^Bx? zPx!)E!{*(~2eqf&S==1^FPFLr8rSN^BnnXVe!H>0xAg<~nC^s+0iXq75+`S?tuEe) zLkT#LX(!TE(tICXSpkV61InmH%B<)Ai)*c`rw8^N#3-um$_((zG{ru<_^*j*Ax2f! z$G(X**eX-3V~YeP1JG_+Lc$=i{`Kt?=bOKIF%GobAmjU&fZa zPj3JC4T{Rhl<7B;Bv-C{$!Lcwa?bY7opMdPI?_LAxupd`$RK3#q5yO~KHC zxTq2M3i852AD+uCu_S-e?e(iSgIyv#Cr3dh!~T2^MgXm`wnN1~Y>nA$L5FIke{mF~ z%~heo$xEb-QfxJI@Hg~-2J@c1bUNZRj#}k2bCB_ds_uz*jllL!=V`0mmewD&Xya%Xq8rG`v zGd@$}2FQlfm22p;CAxZhtF_N$MLT-fHQ{t8_#qdD3aUiOX}2F~#MRJXYp>(L1Yqm(-QI&St(#lJ zj)f&52S7*I`@8!q)gFksT+QX680Cmq7^9)9t(u9=wknz(P=2LU);IXEPLk(x!wAiyVz;JTGJ{`j4nhE>RA~ zdQrE9P$k~;d855_1>|sqaIBX)%pf9c%73a5d8ouih*B{&Z9`{oP6B?Xts|S1Q)B0m zqmLn+Hi%ezy9=GmIRr2C4=pQ%cOHK8+(a@i{`g;Ye=H^?^49BcEJ%6|haFgbmVKky z6RxbxBDJ0A{aO$mIm9zEuEnTrQwqmufBsvjyH7!Xn7Sd{waP^CvK^(Q0jEwA~ z?P9)Ee3jp`uN_ma!uIy|7b9?+_w83(1$Ff#rTy&>P-^jo;GH3+iUSGuXHYGvVS=Nh zqmX#T25c-cOBiA=`c8DU;W2dzdh<0X@b-ooA07!gM8x;4JsKm9t@cA1V=eLQB>r{yz2l_L+ zq-sOo562a@-1}OTc}&mf>ou~^c8?L|e$`NqTyQ3Wctz*wQ@Gx3x-_&`yVW4bYA_qD zdCWEnh^%V^insxRi@Zm`+@PRH{}9nPVQAA=3cY z1*iQ2JeQlB&Gky~Mf#iz9=|6n2n0%)FBgu(RWK zxOrzqc#GKd7Rq5gXS5^DqT7jAsH|aZg$}UxFQsXOZR+I%DJaQGYxDyE8b+8poI!A( zkF2fa>3%b526&((wW&2uC17wauBuN{$rgSpCBJ;@=}>Boy$O9rOF!+*p%D1pQg8OR zoHuxMVR1}tccOREyn(ccMgN%Vs<3PVvk8+DLqQ>bnV~Pqc4=dKJ4mf`Ze9J;`!s$1 z!9V~(n$1%vB$=7qP8azjOjUQBNU(PBya zLbco;df3rAZ<2UDAot-~Xl>~e@bNAE~_SRrbXlW^fwvNui z#qZzdWxCDSSw2^92cT~QwQ9}Dd3dx6M)&6`O&04cUsO;9!N;JJ69+s90g#4xF^sLP zkw$`827*yQtezL2pd|bR(b3VxB_&2bydG{KzbCRVP*6~~xw**%1W16F1Ffw(I+YM^ z0KLuqi9-w}>Kow?U2eRL@ODQ>VG#;K`j%)FZ$gZ3&vu4JykIhcNWq|9*5%(T5$9Qn z32dNu<=*JDw6r$|^Wkk%R{5rQT`RqCz_m@@hxidcvU&v9Y0}fv6?LC*`Ci2)Uc<=C z%Oj#ji|R{pV5>N=C4v0Jc8Xoba;j~#9_C2m1A$)N+)gwBG^Jz5zFr}ewZR+F{SLncl?e_ zQ{O#LUb8{Y00AcSA)2zW346kwzt}$BaLvEB=`)97CBxs4WpR}xO1*ux(LB1oAzTks zJ(aPaNj9R&+ZB`FTAylKBA8K&V>zLW#t1?1(?k5*bkvwZK6YR$)BvnCK=MpM`k z*e%9Iy}kK>CIkfqg@?;ZzhK38uVI$kJaF>FqXM$BNS&OW9sm9$_rBQ(g^QS!AoU4q zcK$;lC`dXyJp7H%gU$EhR00MjYhti39H-iRj9`0bXJhYI>CMvG)75NP+y~{_$e*Ln zZ-Dhcj8WnbC*t+M_qrl}tw4rDDdsEIA`Hcy>cxQ>RLJNp9Mf5txGXp3=H;cNE`V`3Q=0GRzA}5?-@QN!L%;fB9VQ&EZa}6(VC;lS1 zOetXS-#BnD{GCvfWijE{*Sq-J*V)X>c3#J_Wya#2Zun$DssF*Bf$`*%lM7KBC-~Ic zPD21(h*7eJ(=zl~wHkeRgViHN<@7E@d`_se6S^?KWb^PC)UzAnD!&c_(P#j6p(h-S79SWP+VvE{Pbua1-5KS zR6oss1K{?+KmytL>(mC|qxib5A>Vyh#|s(I-?>D=UbRMQ*saH|IVL(SFRy3;G5gEe zqPb{)(fY{c68E+n(fIgydU#w3kkcPDweXRB`lRP0X#JJ4qVHX0nflHGkoT6_sU^M923}Q>#f!pz;>l*txEUVrGjusY>`H{UX#EmoZLkyt+}>^8|TkUNJ8rd zO&h1$+S@rs;sKDse56mLfIzSYqltT4T=oIo8W%{nTU&vbJyX-uYI|YP(Ikq{j)yau z#E0(g?lQ24he!AHva3y7BY)+ebRx&9mDYzsfD+qn%Rtb=~ZKJwZ=ptpV z=Rh}hVPFugU%myX2h(+mSH^&;3wCzhSDh=x9=X&^73+(#hTE2*A7unc_dw3-T6O6 ziAu{9C{faVfFks`cuEt2rI7vP!MkGuywazq!O7EWb=?>w^%He-a}%V(MiQmKvaz*= z_}qO?=XQiWJw1KL%xvB-NrerFwx*`0#dvS!j7@EA%fA|ELHYRjs+@MD6E9lbj`zI# zKauee$VR|SM=GhzF*G%|Qc_$+k6Z)z?yBIw@5XVU74K-hy6`Ga{Q)4{mqAWx?SLoR z%I%X%*vphsC`I}|We4U%FqZE~miJPFs_N59*^U9$vU`mQnPYTz9Zc+UP>+SG#Ry;E zf?Ev=zfa5?tE#N|zX0ecq$J?J!zJpMg8Q50YLuv;5TnCH^x{AM=}5gRe=mYAdpE-o`}ZP|vfo1P7GX;caBN-}#DasqMednBni@{H zjnsg-4)E|zmRnRLvl1_5-R)1+?j7oy_iAf64`?N!OyZZe*Z@?+DJ2vrD)R{d7RT*) z#|K1`Y8LkwdZJ&dPD#fE;t|8EDV07tdRMvSPy3Tm9Ec6Q$MbZm{MOUW7<*TEE*Pc^ zPfM@m?(+n!)lZKBCJT_yp4n2q=aI$d(|L(A??P*cEE&YUyfv7Mk?neM@N<{b zHIWOSEBcDhEE%qd`CwmY*?iqwp^fSxy6;`z)k+;tN6=1Qf9#4f1Tb34C(EO{vB|=v zw?B1}LaWFk0k=a6ok^ea_2VaK%>s~!i{P{q8i-e8T*koD;T2<;Qp-E#^dmM&Cj=m` z;>|99+WV8+Jr(DuRC%Pn-#>@QYGvhMc%^NsYXbzp+wC|wt(BKgqoNPs6H3ar>0|e~ zA`xE*yEQwFC;>-W?RETWJDJ~nnj?I2Wz^ffT)Ujpmh~?4p}p~@##;I`qh|YBZraT+ zoqrJPl|PntrM<}ig0bP$+@%K}iLRcWk)>rg5)MsQZ!cU_RFq9iXQ!aR^Mf-W)){W} z1Q!<RIsUt%3LWO-o$|5&BW%s=bBq4p zVPWCs;e5jJbW<$8A+S%q_#CNQty{_Xp}bI23GER6MyHPv%C^jZ>@esEG(Z&o|Tc`YO+HmWVI8Yb+RRfQ*|yr7vuqh{3woHz4RG z$HvZUc;!8Ywug_tzMK=`v8WJAmGB@85{*nkvIRV8)X*%C#A=< z=cW4Z%t;dZj|@Pz4ScBfZ<4$-Zfq<}cbR=$X z&yugaTeY?GBl%yYKn0K>6cjM@JKi6%jH&<|;iY`zm4yE9>$+_~UJ&}XkYiv|BL7!B zV!=xPc2*n$KCuhs|7 PB8-%nyl926VZi?Z-f~e& literal 0 HcmV?d00001 diff --git a/doc/manual/es/Apache_userdir.raw.xml b/doc/manual/es/Apache_userdir.raw.xml index 3ad0a1da7..5d1946437 100644 --- a/doc/manual/es/Apache_userdir.raw.xml +++ b/doc/manual/es/Apache_userdir.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 30ef521e9..d24684c46 100644 --- a/doc/manual/es/Backups.raw.xml +++ b/doc/manual/es/Backups.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 a890478b0..e0e08bb91 100644 --- a/doc/manual/es/Cockpit.raw.xml +++ b/doc/manual/es/Cockpit.raw.xml @@ -1,3 +1,3 @@
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: Sunday, January 26th at 17: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, February 8th 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 f506d19f0..89d5c3911 100644 --- a/doc/manual/es/Configure.raw.xml +++ b/doc/manual/es/Configure.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 5e47aa7a9..6f758212a 100644 --- a/doc/manual/es/Coquelicot.raw.xml +++ b/doc/manual/es/Coquelicot.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 230534c0c..e6ba46ac9 100644 --- a/doc/manual/es/DateTime.raw.xml +++ b/doc/manual/es/DateTime.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b8aae5449..965add4fd 100644 --- a/doc/manual/es/Deluge.raw.xml +++ b/doc/manual/es/Deluge.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d9fc82951..d6576438c 100644 --- a/doc/manual/es/Diagnostics.raw.xml +++ b/doc/manual/es/Diagnostics.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 30805377d..5f54d9d0f 100644 --- a/doc/manual/es/DynamicDNS.raw.xml +++ b/doc/manual/es/DynamicDNS.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d4c078520..144c85c7e 100644 --- a/doc/manual/es/Firewall.raw.xml +++ b/doc/manual/es/Firewall.raw.xml @@ -10,4 +10,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: Sunday, January 26th at 17: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, February 8th 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 index 109973c04..fe6d43823 100644 --- a/doc/manual/es/GitWeb.raw.xml +++ b/doc/manual/es/GitWeb.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/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, February 8th 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 717800849..54298a489 100644 --- a/doc/manual/es/I2P.raw.xml +++ b/doc/manual/es/I2P.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 fdfa55fd5..6407d52d0 100644 --- a/doc/manual/es/Ikiwiki.raw.xml +++ b/doc/manual/es/Ikiwiki.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 c5526f91e..b68b85ecb 100644 --- a/doc/manual/es/Infinoted.raw.xml +++ b/doc/manual/es/Infinoted.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 b32985d98..bd69a2a16 100644 --- a/doc/manual/es/LetsEncrypt.raw.xml +++ b/doc/manual/es/LetsEncrypt.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 01985bbd8..04de2c220 100644 --- a/doc/manual/es/MLDonkey.raw.xml +++ b/doc/manual/es/MLDonkey.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 72fc3166f..176c068de 100644 --- a/doc/manual/es/MatrixSynapse.raw.xml +++ b/doc/manual/es/MatrixSynapse.raw.xml @@ -4,4 +4,4 @@ chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secr 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: Para crear una comunidad en Matrix Synapse se necesita un usuario Matrix con privilegios de admin en el servidor. Para dárselos a miusuario ejecuta los siguientes comandos 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: Sunday, January 26th at 17: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 "UPDATE users SET admin=1 WHERE name='@miusuario:dominio'" | sudo 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, February 8th 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 ce7352ca4..dbcc6e5ff 100644 --- a/doc/manual/es/MediaWiki.raw.xml +++ b/doc/manual/es/MediaWiki.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/MediaWiki82020-01-21 08:10:38fioddorSe alinea con la versión 11 en inglés del 21 de enero de 202072020-01-21 08:07:02fioddorSe alinea con la versión 10 en inglés del 18 de enero de 202062019-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 web de FreedomBox.
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.
Personalización
Temas de estiloEl tema por defecto de MediaWiki suele ser Vector. El de FreedomBox es Timeless. Vector es un tema optimizado para visualizarlo en pantallas grandes pero no se adecúa bien a los tamaños de pantalla de los móviles. Wikimedia usa otro sitio específico para móviles. Para instalaciones pequeñas como las de FreedomBox no merece la pena un segundo sitio dedicado. Usar un tema de estilo más polivalente como Timeless es una solución más eficiente al problema. Los administradores pueden elegir el tema por defecto desde la configuración de la app. Los usuarios del sitio tienen también la opción de visualizarlo con temas diferentes. 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, February 8th 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 39283b255..67ab42914 100644 --- a/doc/manual/es/Minetest.raw.xml +++ b/doc/manual/es/Minetest.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 index 5a7681504..16bbc2139 100644 --- a/doc/manual/es/MiniDLNA.raw.xml +++ b/doc/manual/es/MiniDLNA.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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/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, February 8th 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 75fc741f2..1cac2dd70 100644 --- a/doc/manual/es/Monkeysphere.raw.xml +++ b/doc/manual/es/Monkeysphere.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 823f4ea5e..dc4ce87fa 100644 --- a/doc/manual/es/Mumble.raw.xml +++ b/doc/manual/es/Mumble.raw.xml @@ -1,2 +1,2 @@
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: Sunday, January 26th at 17: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, February 8th 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 404654777..b819001a2 100644 --- a/doc/manual/es/NameServices.raw.xml +++ b/doc/manual/es/NameServices.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 ada7458de..c5be76d55 100644 --- a/doc/manual/es/Networks.raw.xml +++ b/doc/manual/es/Networks.raw.xml @@ -2,4 +2,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: Sunday, January 26th at 17: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, February 8th 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 36cc3688a..be7554ad3 100644 --- a/doc/manual/es/OpenVPN.raw.xml +++ b/doc/manual/es/OpenVPN.raw.xml @@ -1,4 +1,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: Sunday, January 26th at 17: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, February 8th 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 34f12ffbb..1c4a3ddb7 100644 --- a/doc/manual/es/PageKite.raw.xml +++ b/doc/manual/es/PageKite.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 0d5657da8..7fdf94e90 100644 --- a/doc/manual/es/Power.raw.xml +++ b/doc/manual/es/Power.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 e58966fef..bad1850fd 100644 --- a/doc/manual/es/Privoxy.raw.xml +++ b/doc/manual/es/Privoxy.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 1a767581e..0ea13ca5d 100644 --- a/doc/manual/es/Quassel.raw.xml +++ b/doc/manual/es/Quassel.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 3ccccd3b9..29020da1b 100644 --- a/doc/manual/es/Radicale.raw.xml +++ b/doc/manual/es/Radicale.raw.xml @@ -22,4 +22,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: Sunday, January 26th at 17: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, February 8th 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 48dcdc768..24ce75418 100644 --- a/doc/manual/es/Repro.raw.xml +++ b/doc/manual/es/Repro.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 28af17f3c..8bd4f5044 100644 --- a/doc/manual/es/Roundcube.raw.xml +++ b/doc/manual/es/Roundcube.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 9c4b6d42c..e72b91be9 100644 --- a/doc/manual/es/Searx.raw.xml +++ b/doc/manual/es/Searx.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 ecda4f7e7..17c888242 100644 --- a/doc/manual/es/SecureShell.raw.xml +++ b/doc/manual/es/SecureShell.raw.xml @@ -1,4 +1,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: Sunday, January 26th at 17: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, February 8th 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 05eb50c7f..752d3603e 100644 --- a/doc/manual/es/Security.raw.xml +++ b/doc/manual/es/Security.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d72a5d589..76fbbf57d 100644 --- a/doc/manual/es/ServiceDiscovery.raw.xml +++ b/doc/manual/es/ServiceDiscovery.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 855a84410..5a116b819 100644 --- a/doc/manual/es/Shadowsocks.raw.xml +++ b/doc/manual/es/Shadowsocks.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 5fd949a6e..f2e354824 100644 --- a/doc/manual/es/Snapshots.raw.xml +++ b/doc/manual/es/Snapshots.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 9541adda4..d25d9273b 100644 --- a/doc/manual/es/Storage.raw.xml +++ b/doc/manual/es/Storage.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 2e8f50972..9f6f93df9 100644 --- a/doc/manual/es/Syncthing.raw.xml +++ b/doc/manual/es/Syncthing.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 f75409d5f..d4a31c1c3 100644 --- a/doc/manual/es/TinyTinyRSS.raw.xml +++ b/doc/manual/es/TinyTinyRSS.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 34fc4ab21..e57b98176 100644 --- a/doc/manual/es/Tor.raw.xml +++ b/doc/manual/es/Tor.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 e5881777c..1cb59af3a 100644 --- a/doc/manual/es/Transmission.raw.xml +++ b/doc/manual/es/Transmission.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 d0bcbcf95..d93eb7028 100644 --- a/doc/manual/es/Upgrades.raw.xml +++ b/doc/manual/es/Upgrades.raw.xml @@ -5,4 +5,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: Sunday, January 26th at 17: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, February 8th 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 a2a9ac622..477795879 100644 --- a/doc/manual/es/Users.raw.xml +++ b/doc/manual/es/Users.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 dadc3d6b5..21fa8a7cb 100644 --- a/doc/manual/es/ejabberd.raw.xml +++ b/doc/manual/es/ejabberd.raw.xml @@ -1 +1 @@ -
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: Sunday, January 26th at 17: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, February 8th 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 ab1b7aa9f..471d6bd69 100644 --- a/doc/manual/es/freedombox-manual.raw.xml +++ b/doc/manual/es/freedombox-manual.raw.xml @@ -2881,7 +2881,7 @@ echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini MediaWiki 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 Usuarios - Solo 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. + Solo 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 web de FreedomBox.
Casos de uso @@ -2914,6 +2914,15 @@ echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini Se 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.
+
+ Personalización +
+ Temas de estilo + El tema por defecto de MediaWiki suele ser Vector. El de FreedomBox es Timeless. + Vector es un tema optimizado para visualizarlo en pantallas grandes pero no se adecúa bien a los tamaños de pantalla de los móviles. Wikimedia usa otro sitio específico para móviles. Para instalaciones pequeñas como las de FreedomBox no merece la pena un segundo sitio dedicado. Usar un tema de estilo más polivalente como Timeless es una solución más eficiente al problema. + Los administradores pueden elegir el tema por defecto desde la configuración de la app. Los usuarios del sitio tienen también la opción de visualizarlo con temas diferentes. +
+
@@ -3043,17 +3052,17 @@ echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini
Access - GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb + GitWeb can be accessed after installation e.g. by the web client through
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. + Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and not to use an admin account.
Mirroring @@ -9911,6 +9920,65 @@ 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 20.1 (2020-01-27) + + + deluge: Allow to set a download directory + + + deluge: Fix installation failure on slow machine + + + storage: Make external disk mounts accessible to other users + + + gitweb: Add link to the manual page + + + style: Fix incorrect margins for containers in mobile view + + + style: Fix responsiveness for app header + + + network: Fix activating connections that don't have real devices + + + wireguard: Add WireGuard VPN app + + + networks: Add router configuration page + + + networks: Add first boot step for router config helper + + + bind: Enable sandboxing for bind service + + + Translated using Weblate (Dutch) + + + Translated using Weblate (Norwegian Bokmål) + + + Translated using Weblate (German) + + + Translated using Weblate (Spanish) + + + Translated using Weblate (Swedish) + + + Translated using Weblate (French) + + + Translated using Weblate (Greek) + + +
FreedomBox 20.0 (2020-01-13) From 12a5b72ef555ebc9fb471646640861c79a12f8b8 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 19:37:18 -0500 Subject: [PATCH 84/87] debian: Rename TODO.Debian to TODO Signed-off-by: James Valleroy --- debian/{TODO.Debian => TODO} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename debian/{TODO.Debian => TODO} (100%) diff --git a/debian/TODO.Debian b/debian/TODO similarity index 100% rename from debian/TODO.Debian rename to debian/TODO From 4c6fa5c9e83a1182a1bdb957017ee82b6249bca1 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 19:40:02 -0500 Subject: [PATCH 85/87] debian: Add Expat license to copyright Signed-off-by: James Valleroy --- debian/copyright | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/copyright b/debian/copyright index 79e553930..3834050b0 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2504,6 +2504,25 @@ License: CC-BY-SA-3.0 ․ Creative Commons may be contacted at http://creativecommons.org/. +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + License: GPL-2 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From 619ca6042f7010eb8369a130216c7946c29749cf Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 19:41:10 -0500 Subject: [PATCH 86/87] debian: Update standards version to 4.5.0 Signed-off-by: James Valleroy --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 5840e9a03..ed25e7a03 100644 --- a/debian/control +++ b/debian/control @@ -45,7 +45,7 @@ Build-Depends: python3-yaml, xmlto, xsltproc -Standards-Version: 4.4.1 +Standards-Version: 4.5.0 Homepage: https://salsa.debian.org/freedombox-team/plinth Vcs-Git: https://salsa.debian.org/freedombox-team/plinth.git Vcs-Browser: https://salsa.debian.org/freedombox-team/plinth From 964051a84908230e8eae3810ef2972f59a68e175 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 27 Jan 2020 19:41:41 -0500 Subject: [PATCH 87/87] Release v20.1 to unstable Signed-off-by: James Valleroy --- debian/changelog | 110 +++++++++++++++++++++++++++++++++++++++++++++ plinth/__init__.py | 2 +- 2 files changed, 111 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 47fd19c1b..74943d881 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,113 @@ +plinth (20.1) unstable; urgency=medium + + [ ikmaak ] + * Translated using Weblate (Dutch) + * Translated using Weblate (Dutch) + + [ Allan Nordhøy ] + * samba: Fix spelling + * Translated using Weblate (Norwegian Bokmål) + * Translated using Weblate (German) + * Translated using Weblate (Spanish) + * Translated using Weblate (Norwegian Bokmål) + * Translated using Weblate (Swedish) + + [ Veiko Aasa ] + * samba: Add unit and functional tests + * deluge: Allow one to set a download directory + * deluge: Fix installation failure on slow machine + * storage: Make external disk mounts accessible by other users + * gitweb: Add link to the manual page + * gitweb: Fix functional tests if git user and email is not configured + + [ Sunil Mohan Adapa ] + * style: Fix incorrect margins for containers in mobile view + * style: Fix responsiveness for app header + * network: Fix activating connections that don't have real devices + * network: Allow setting the auto-connect property on a connection + * network: Add method to re-activate connections after an update + * wireguard: Show large buttons in show client/server pages + * wireguard: Cosmetic fixes by yapf and isort + * wireguard: Don't error out when wg0 server is not setup + * wireguard: Add ability to set private key in client addition + * wireguard: Accept all IPs on server in a client setup + * wireguard: Update descriptions in form labels + * wireguard: Only use network manager for connections to servers + * wireguard: Handle client connections through network manager + * wireguard: Update descriptions for client vs. server clarity + * wireguard: Generate private key if needed when editing server + * wireguard: Add validations in forms + * wireguard: Ensure tests work without latest network manager + * wireguard: Implement enabling/disabling app using a stored flag + * wireguard: Enable/disable connections along with the app + * wireguard: When a connection is edited, reactivate to apply changes + * wireguard: Show public key even when connection is not active + + [ Thomas Vincent ] + * Translated using Weblate (French) + + [ Nektarios Katakis ] + * Translated using Weblate (Greek) + * Translated using Weblate (Greek) + * Translated using Weblate (Greek) + * networks: form for configuring router + * networks: create view & url for new form + * networks: add link to main page for router config form + * networks: add first boot step for router config helper + * networks: modify as first boot wizard step + * networks: save router config to kvstore + + [ James Valleroy ] + * Translated using Weblate (French) + * wireguard: Add skeleton for new app + * wireguard: Implement adding client + * wireguard: Show list of added clients + * wireguard: Allow deleting a client + * wireguard: Add client info view + * wireguard: Form to add server + * wireguard: List peers in client section + * wireguard: Add server information view + * wireguard: Generate key pair + * wireguard: Show this box's public key + * wireguard: Create network manager connection + * wireguard: Encode public keys for use in URLs + * wireguard: Refactor actions file + * wireguard: Add views for editing and deleting clients and servers + * wireguard: Make setup idempotent + * wireguard: Write pre-shared key to tempfile + * wireguard: Use network API to handle connections + * wireguard: Add icon + * wireguard: Replace nmcli use with libnm + * restore: Remove app + * repro: Remove app + * networks: Update text for router setup + * bind: Enable systemd sandbox options for bind9 service + * functional_tests: Update geckodriver version to v0.26.0 + * locale: Update translation strings + * doc: Fetch latest manual + * debian: Rename TODO.Debian to TODO + * debian: Add Expat license to copyright + * debian: Update standards version to 4.5.0 + + [ Dietmar ] + * Translated using Weblate (German) + + [ nautilusx ] + * Translated using Weblate (German) + * Translated using Weblate (German) + + [ Joseph Nuthalapati ] + * functional-tests: Login only once per session + * functional-tests: Africa/Addis_Abada is gone? + * functional-tests: Add tag @service-discovery + * functional-tests: Make nav_to_module efficient + * functional-tests: Avoid unnecessary trips to Home + * functional-tests: Avoid warnings about markers + * functional-tests: Minor refactoring + * functional-tests: Mark backups and security with @system + + -- James Valleroy Mon, 27 Jan 2020 19:23:04 -0500 + plinth (20.0) unstable; urgency=medium [ Veiko Aasa ] diff --git a/plinth/__init__.py b/plinth/__init__.py index 7ac7bd615..3ba5fe8e5 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -18,4 +18,4 @@ Package init file. """ -__version__ = '20.0' +__version__ = '20.1'