mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-01-01 06:16:16 +00:00
Add forms for Worker and ClusterSettings with translations and workers list template
This commit is contained in:
139
cluster/forms.py
Normal file
139
cluster/forms.py
Normal file
@@ -0,0 +1,139 @@
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Column, HTML, Layout, Row, Submit
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import ClusterSettings, Worker
|
||||
|
||||
|
||||
class WorkerForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Worker
|
||||
fields = ['name', 'enabled', 'ip_lock', 'ip_address', 'country', 'city', 'hostname']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['name'].label = _("Name")
|
||||
self.fields['enabled'].label = _("Enabled")
|
||||
self.fields['ip_lock'].label = _("IP Lock")
|
||||
self.fields['ip_address'].label = _("IP Address")
|
||||
self.fields['country'].label = _("Country")
|
||||
self.fields['city'].label = _("City")
|
||||
self.fields['hostname'].label = _("Hostname")
|
||||
|
||||
back_label = _("Back")
|
||||
delete_label = _("Delete")
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_method = 'post'
|
||||
|
||||
if self.instance.pk:
|
||||
delete_html = f"<a href='javascript:void(0)' class='btn btn-outline-danger' data-command='delete' onclick='openCommandDialog(this)'>{delete_label}</a>"
|
||||
else:
|
||||
delete_html = ''
|
||||
|
||||
self.helper.layout = Layout(
|
||||
Row(
|
||||
Column('name', css_class='form-group col-md-6 mb-0'),
|
||||
Column('enabled', css_class='form-group col-md-6 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column('ip_lock', css_class='form-group col-md-6 mb-0'),
|
||||
Column('ip_address', css_class='form-group col-md-6 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column('country', css_class='form-group col-md-4 mb-0'),
|
||||
Column('city', css_class='form-group col-md-4 mb-0'),
|
||||
Column('hostname', css_class='form-group col-md-4 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Submit('submit', _('Save'), css_class='btn btn-success'),
|
||||
HTML(f' <a class="btn btn-secondary" href="/cluster/">{back_label}</a> '),
|
||||
HTML(delete_html),
|
||||
css_class='col-md-12'),
|
||||
css_class='form-row'
|
||||
)
|
||||
)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
name = cleaned_data.get('name')
|
||||
ip_lock = cleaned_data.get('ip_lock')
|
||||
ip_address = cleaned_data.get('ip_address')
|
||||
|
||||
if Worker.objects.filter(name=name).exclude(pk=self.instance.pk if self.instance else None).exists():
|
||||
raise ValidationError(_("A worker with that name already exists."))
|
||||
|
||||
if ip_lock and not ip_address:
|
||||
raise ValidationError(_("IP Address is required when IP Lock is enabled."))
|
||||
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class ClusterSettingsForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ClusterSettings
|
||||
fields = [
|
||||
'enabled', 'primary_enable_wireguard', 'stats_sync_interval',
|
||||
'stats_cache_interval', 'cluster_mode', 'restart_mode', 'worker_display'
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['enabled'].label = _("Cluster Enabled")
|
||||
self.fields['primary_enable_wireguard'].label = _("Primary Enable WireGuard")
|
||||
self.fields['stats_sync_interval'].label = _("Stats Sync Interval (seconds)")
|
||||
self.fields['stats_cache_interval'].label = _("Stats Cache Interval (seconds)")
|
||||
self.fields['cluster_mode'].label = _("Cluster Mode")
|
||||
self.fields['restart_mode'].label = _("Restart Mode")
|
||||
self.fields['worker_display'].label = _("Worker Display")
|
||||
|
||||
back_label = _("Back")
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_method = 'post'
|
||||
|
||||
self.helper.layout = Layout(
|
||||
Row(
|
||||
Column('enabled', css_class='form-group col-md-6 mb-0'),
|
||||
Column('primary_enable_wireguard', css_class='form-group col-md-6 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column('stats_sync_interval', css_class='form-group col-md-6 mb-0'),
|
||||
Column('stats_cache_interval', css_class='form-group col-md-6 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column('cluster_mode', css_class='form-group col-md-6 mb-0'),
|
||||
Column('restart_mode', css_class='form-group col-md-6 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column('worker_display', css_class='form-group col-md-12 mb-0'),
|
||||
css_class='form-row'
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Submit('submit', _('Save'), css_class='btn btn-success'),
|
||||
HTML(f' <a class="btn btn-secondary" href="/cluster/">{back_label}</a> '),
|
||||
css_class='col-md-12'),
|
||||
css_class='form-row'
|
||||
)
|
||||
)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
stats_sync_interval = cleaned_data.get('stats_sync_interval')
|
||||
stats_cache_interval = cleaned_data.get('stats_cache_interval')
|
||||
|
||||
if stats_sync_interval and stats_sync_interval < 10:
|
||||
raise ValidationError(_("Stats sync interval must be at least 10 seconds."))
|
||||
|
||||
if stats_cache_interval and stats_cache_interval < 10:
|
||||
raise ValidationError(_("Stats cache interval must be at least 10 seconds."))
|
||||
|
||||
return cleaned_data
|
||||
135
cluster/views.py
135
cluster/views.py
@@ -1 +1,134 @@
|
||||
# Create your views here.
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from user_manager.models import UserAcl
|
||||
from .forms import WorkerForm, ClusterSettingsForm
|
||||
from .models import ClusterSettings, Worker
|
||||
|
||||
|
||||
@login_required
|
||||
def cluster_main(request):
|
||||
"""Main cluster page with workers list"""
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': _('Access Denied')})
|
||||
|
||||
page_title = _('Cluster')
|
||||
workers = Worker.objects.all().order_by('name')
|
||||
context = {'page_title': page_title, 'workers': workers}
|
||||
return render(request, 'cluster/workers_list.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
def worker_manage(request):
|
||||
"""Add/Edit worker view"""
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': _('Access Denied')})
|
||||
|
||||
worker = None
|
||||
if 'uuid' in request.GET:
|
||||
worker = get_object_or_404(Worker, uuid=request.GET['uuid'])
|
||||
form = WorkerForm(instance=worker)
|
||||
page_title = _('Edit Worker: ') + worker.name
|
||||
|
||||
if request.GET.get('action') == 'delete':
|
||||
worker_name = worker.name
|
||||
if request.GET.get('confirmation') == 'delete':
|
||||
worker.delete()
|
||||
messages.success(request, _('Worker deleted|Worker deleted: ') + worker_name)
|
||||
return redirect('/cluster/')
|
||||
else:
|
||||
messages.warning(request, _('Worker not deleted|Invalid confirmation.'))
|
||||
return redirect('/cluster/')
|
||||
else:
|
||||
form = WorkerForm()
|
||||
page_title = _('Add Worker')
|
||||
|
||||
if request.method == 'POST':
|
||||
if worker:
|
||||
form = WorkerForm(request.POST, instance=worker)
|
||||
else:
|
||||
form = WorkerForm(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
worker = form.save()
|
||||
if worker.pk:
|
||||
messages.success(request, _('Worker updated|Worker updated: ') + worker.name)
|
||||
else:
|
||||
messages.success(request, _('Worker created|Worker created: ') + worker.name)
|
||||
return redirect('/cluster/')
|
||||
|
||||
form_description = {
|
||||
'size': 'col-lg-6',
|
||||
'content': _('''
|
||||
<h5>Worker Configuration</h5>
|
||||
<p>Configure a cluster worker node that will synchronize with this primary instance.</p>
|
||||
|
||||
<h5>Name</h5>
|
||||
<p>A unique name to identify this worker.</p>
|
||||
|
||||
<h5>IP Address</h5>
|
||||
<p>The IP address of the worker node. Leave empty if IP lock is disabled.</p>
|
||||
|
||||
<h5>IP Lock</h5>
|
||||
<p>When enabled, the worker can only connect from the specified IP address.</p>
|
||||
|
||||
<h5>Location Information</h5>
|
||||
<p>Optional location details for this worker (country, city, hostname).</p>
|
||||
''')
|
||||
}
|
||||
|
||||
context = {
|
||||
'page_title': page_title,
|
||||
'form': form,
|
||||
'worker': worker,
|
||||
'instance': worker,
|
||||
'form_description': form_description
|
||||
}
|
||||
return render(request, 'generic_form.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
def cluster_settings(request):
|
||||
"""Cluster settings configuration"""
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': _('Access Denied')})
|
||||
|
||||
cluster_settings, created = ClusterSettings.objects.get_or_create(name='cluster_settings')
|
||||
page_title = _('Cluster Settings')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = ClusterSettingsForm(request.POST, instance=cluster_settings)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _('Cluster settings updated successfully.'))
|
||||
return redirect('/cluster/')
|
||||
else:
|
||||
form = ClusterSettingsForm(instance=cluster_settings)
|
||||
|
||||
form_description = {
|
||||
'size': 'col-lg-6',
|
||||
'content': _('''
|
||||
<h5>Cluster Mode</h5>
|
||||
<p>Configure how the cluster operates and synchronizes configurations between nodes.</p>
|
||||
|
||||
<h5>Sync Intervals</h5>
|
||||
<p>Configure how frequently statistics and cache data are synchronized between cluster nodes.</p>
|
||||
|
||||
<h5>Restart Mode</h5>
|
||||
<p>Choose whether WireGuard services should be automatically restarted when configurations change, or if manual intervention is required.</p>
|
||||
|
||||
<h5>Worker Display</h5>
|
||||
<p>Select how workers should be identified in the interface - by name, server address, location, or a combination.</p>
|
||||
''')
|
||||
}
|
||||
|
||||
context = {
|
||||
'page_title': page_title,
|
||||
'form': form,
|
||||
'cluster_settings': cluster_settings,
|
||||
'instance': cluster_settings,
|
||||
'form_description': form_description
|
||||
}
|
||||
return render(request, 'generic_form.html', context)
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-12 11:30-0300\n"
|
||||
"POT-Creation-Date: 2025-08-14 22:07-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,6 +17,208 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cluster/forms.py:17 dns/forms.py:111 templates/cluster/workers_list.html:8
|
||||
#: templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: cluster/forms.py:18 templates/cluster/workers_list.html:24
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiviert"
|
||||
|
||||
#: cluster/forms.py:19
|
||||
msgid "IP Lock"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:20 dns/forms.py:66 templates/cluster/workers_list.html:10
|
||||
#: templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "IP‑Adresse"
|
||||
|
||||
#: cluster/forms.py:21
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:22
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:23 dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Hostname"
|
||||
|
||||
#: cluster/forms.py:25 cluster/forms.py:95 dns/forms.py:25 dns/forms.py:67
|
||||
#: dns/forms.py:109 templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: cluster/forms.py:26 dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: cluster/forms.py:54 cluster/forms.py:121 dns/forms.py:37 dns/forms.py:83
|
||||
#: dns/forms.py:134 templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: cluster/forms.py:69
|
||||
msgid "A worker with that name already exists."
|
||||
msgstr "Ein Worker mit diesem Namen existiert bereits."
|
||||
|
||||
#: cluster/forms.py:72
|
||||
msgid "IP Address is required when IP Lock is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:87
|
||||
msgid "Cluster Enabled"
|
||||
msgstr "Cluster aktiviert"
|
||||
|
||||
#: cluster/forms.py:88
|
||||
msgid "Primary Enable WireGuard"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:89
|
||||
msgid "Stats Sync Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:90
|
||||
msgid "Stats Cache Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:91
|
||||
msgid "Cluster Mode"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:92
|
||||
msgid "Restart Mode"
|
||||
msgstr "Neustart-Modus"
|
||||
|
||||
#: cluster/forms.py:93
|
||||
msgid "Worker Display"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:134
|
||||
msgid "Stats sync interval must be at least 10 seconds."
|
||||
msgstr "Statistik-Synchronisationsintervall muss mindestens 10 Sekunden betragen."
|
||||
"Aktualisierungsintervall der Peer‑Liste muss mindestens 5 Sekunden betragen"
|
||||
|
||||
#: cluster/forms.py:137
|
||||
msgid "Stats cache interval must be at least 10 seconds."
|
||||
msgstr "Statistik-Cache-Intervall muss mindestens 10 Sekunden betragen."
|
||||
"Aktualisierungsintervall der Peer‑Liste muss mindestens 5 Sekunden betragen"
|
||||
|
||||
#: cluster/views.py:15 cluster/views.py:27 cluster/views.py:96
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Zugriff verweigert"
|
||||
|
||||
#: cluster/views.py:17 templates/base.html:185
|
||||
msgid "Cluster"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:33
|
||||
msgid "Edit Worker: "
|
||||
msgstr "Worker bearbeiten: "
|
||||
|
||||
#: cluster/views.py:39
|
||||
msgid "Worker deleted|Worker deleted: "
|
||||
msgstr "Worker gelöscht|Worker gelöscht: "
|
||||
|
||||
#: cluster/views.py:42
|
||||
msgid "Worker not deleted|Invalid confirmation."
|
||||
msgstr "Worker nicht gelöscht|Ungültige Bestätigung."
|
||||
|
||||
#: cluster/views.py:46 templates/cluster/list_buttons.html:2
|
||||
msgid "Add Worker"
|
||||
msgstr "Worker hinzufügen"
|
||||
|
||||
#: cluster/views.py:57
|
||||
msgid "Worker updated|Worker updated: "
|
||||
msgstr "Worker aktualisiert|Worker aktualisiert: "
|
||||
|
||||
#: cluster/views.py:59
|
||||
msgid "Worker created|Worker created: "
|
||||
msgstr "Worker erstellt|Worker erstellt: "
|
||||
|
||||
#: cluster/views.py:64
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Worker Configuration</h5>\n"
|
||||
" <p>Configure a cluster worker node that will synchronize with this "
|
||||
"primary instance.</p>\n"
|
||||
" \n"
|
||||
" <h5>Name</h5>\n"
|
||||
" <p>A unique name to identify this worker.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Address</h5>\n"
|
||||
" <p>The IP address of the worker node. Leave empty if IP lock is "
|
||||
"disabled.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Lock</h5>\n"
|
||||
" <p>When enabled, the worker can only connect from the specified IP "
|
||||
"address.</p>\n"
|
||||
" \n"
|
||||
" <h5>Location Information</h5>\n"
|
||||
" <p>Optional location details for this worker (country, city, "
|
||||
"hostname).</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:99 templates/cluster/list_buttons.html:3
|
||||
msgid "Cluster Settings"
|
||||
msgstr "Cluster-Einstellungen"
|
||||
|
||||
#: cluster/views.py:105
|
||||
msgid "Cluster settings updated successfully."
|
||||
msgstr "Cluster-Einstellungen erfolgreich aktualisiert."
|
||||
|
||||
#: cluster/views.py:112
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Cluster Mode</h5>\n"
|
||||
" <p>Configure how the cluster operates and synchronizes "
|
||||
"configurations between nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Sync Intervals</h5>\n"
|
||||
" <p>Configure how frequently statistics and cache data are "
|
||||
"synchronized between cluster nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Restart Mode</h5>\n"
|
||||
" <p>Choose whether WireGuard services should be automatically "
|
||||
"restarted when configurations change, or if manual intervention is required."
|
||||
"</p>\n"
|
||||
" \n"
|
||||
" <h5>Worker Display</h5>\n"
|
||||
" <p>Select how workers should be identified in the interface - by "
|
||||
"name, server address, location, or a combination.</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||
msgid "Console"
|
||||
msgstr "Konsole"
|
||||
@@ -66,64 +268,14 @@ msgstr "Primärer DNS"
|
||||
msgid "Secondary DNS"
|
||||
msgstr "Sekundärer DNS"
|
||||
|
||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||
#: templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: dns/forms.py:29
|
||||
msgid "Resolver Settings"
|
||||
msgstr "Resolver‑Einstellungen"
|
||||
|
||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
||||
#: templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Hostname"
|
||||
|
||||
#: dns/forms.py:66 templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "IP‑Adresse"
|
||||
|
||||
#: dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: dns/forms.py:75
|
||||
msgid "Static DNS"
|
||||
msgstr "Statischer DNS"
|
||||
|
||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: dns/forms.py:112 firewall/forms.py:111
|
||||
#: templates/dns/static_host_list.html:69
|
||||
#: templates/firewall/manage_redirect_rule.html:18
|
||||
@@ -474,10 +626,6 @@ msgstr ""
|
||||
"Wenn dir bei der Übersetzung Fehler auffallen oder du eine neue Sprache "
|
||||
"anfordern möchtest, öffne bitte ein"
|
||||
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Zugriff verweigert"
|
||||
|
||||
#: templates/access_denied.html:12
|
||||
msgid "Sorry, you do not have permission to access this page."
|
||||
msgstr "Sie haben leider keine Berechtigung, diese Seite aufzurufen."
|
||||
@@ -511,9 +659,10 @@ msgstr "Sie wurden erfolgreich abgemeldet."
|
||||
msgid "Login again"
|
||||
msgstr "Erneut anmelden"
|
||||
|
||||
#: templates/base.html:112 templates/dns/static_host_list.html:72
|
||||
#: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80
|
||||
#: vpn_invite/forms.py:81 vpn_invite/forms.py:82
|
||||
#: templates/base.html:112 templates/cluster/workers_list.html:9
|
||||
#: templates/dns/static_host_list.html:72 vpn_invite/forms.py:78
|
||||
#: vpn_invite/forms.py:79 vpn_invite/forms.py:80 vpn_invite/forms.py:81
|
||||
#: vpn_invite/forms.py:82
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -526,11 +675,11 @@ msgstr "Benutzerverwaltung"
|
||||
msgid "VPN Invite"
|
||||
msgstr "VPN‑Einladung"
|
||||
|
||||
#: templates/base.html:254
|
||||
#: templates/base.html:263
|
||||
msgid "Update Required"
|
||||
msgstr "Aktualisierung erforderlich"
|
||||
|
||||
#: templates/base.html:256
|
||||
#: templates/base.html:265
|
||||
msgid ""
|
||||
"Your WireGuard settings have been modified. To apply these changes, please "
|
||||
"update the configuration and reload the WireGuard service."
|
||||
@@ -538,22 +687,78 @@ msgstr ""
|
||||
"Ihre WireGuard‑Einstellungen wurden geändert. Um die Änderungen anzuwenden, "
|
||||
"aktualisieren Sie die Konfiguration und laden Sie den WireGuard‑Dienst neu."
|
||||
|
||||
#: templates/base.html:265
|
||||
#: templates/base.html:274
|
||||
msgid "Update and restart service"
|
||||
msgstr "Aktualisieren und Dienst neu starten"
|
||||
|
||||
#: templates/base.html:273
|
||||
#: templates/base.html:282
|
||||
msgid "Update and reload service"
|
||||
msgstr "Aktualisieren und Dienst neu laden"
|
||||
|
||||
#: templates/base.html:286
|
||||
#: templates/base.html:295
|
||||
msgid "Update Available"
|
||||
msgstr "Aktualisierung verfügbar"
|
||||
|
||||
#: templates/base.html:288
|
||||
#: templates/base.html:297
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: templates/cluster/workers_list.html:11
|
||||
msgid "Location"
|
||||
msgstr "Standort"
|
||||
|
||||
#: templates/cluster/workers_list.html:12
|
||||
msgid "Last Seen"
|
||||
msgstr "Zuletzt gesehen"
|
||||
|
||||
#: templates/cluster/workers_list.html:13
|
||||
msgid "Config Version"
|
||||
msgstr "Konfigurationsversion"
|
||||
|
||||
#: templates/cluster/workers_list.html:14
|
||||
msgid "Options"
|
||||
msgstr "Optionen"
|
||||
|
||||
#: templates/cluster/workers_list.html:26 vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Deaktiviert"
|
||||
|
||||
#: templates/cluster/workers_list.html:33
|
||||
msgid "IP Lock Enabled"
|
||||
msgstr "IP-Sperre aktiviert"
|
||||
|
||||
#: templates/cluster/workers_list.html:36
|
||||
#: templates/cluster/workers_list.html:43
|
||||
msgid "Not set"
|
||||
msgstr "Nicht gesetzt"
|
||||
|
||||
#: templates/cluster/workers_list.html:50
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:57
|
||||
msgid "Config Pending"
|
||||
msgstr "Konfiguration ausstehend"
|
||||
|
||||
#: templates/cluster/workers_list.html:65
|
||||
msgid "Force Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:70
|
||||
msgid "Force Restart"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:74
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: templates/cluster/workers_list.html:79
|
||||
msgid "No workers configured"
|
||||
msgstr ""
|
||||
|
||||
#: templates/console/console.html:12
|
||||
msgid "Clear"
|
||||
msgstr "Leeren"
|
||||
@@ -594,12 +799,6 @@ msgstr "Letzte Aktualisierung"
|
||||
msgid "Update"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: templates/dns/static_host_list.html:116
|
||||
msgid "Add Filter List"
|
||||
msgstr "Filterliste hinzufügen"
|
||||
@@ -1278,7 +1477,8 @@ msgid ""
|
||||
"key manually in your client before using it."
|
||||
msgstr ""
|
||||
"Diese Konfiguration enthält keinen privaten Schlüssel. Sie müssen den "
|
||||
"privaten Schlüssel manuell in Ihrem Client hinzufügen, bevor Sie ihn verwenden."
|
||||
"privaten Schlüssel manuell in Ihrem Client hinzufügen, bevor Sie ihn "
|
||||
"verwenden."
|
||||
|
||||
#: templates/wireguard/wireguard_peer_list.html:590
|
||||
msgid ""
|
||||
@@ -1590,14 +1790,6 @@ msgstr ""
|
||||
msgid "Please type the username to proceed."
|
||||
msgstr "Bitte geben Sie den Benutzernamen ein, um fortzufahren."
|
||||
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiviert"
|
||||
|
||||
#: vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Deaktiviert"
|
||||
|
||||
#: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70
|
||||
#: vpn_invite/forms.py:71 vpn_invite/forms.py:72
|
||||
msgid "URL"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-12 11:30-0300\n"
|
||||
"POT-Creation-Date: 2025-08-14 22:07-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,6 +17,206 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cluster/forms.py:17 dns/forms.py:111 templates/cluster/workers_list.html:8
|
||||
#: templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: cluster/forms.py:18 templates/cluster/workers_list.html:24
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#: cluster/forms.py:19
|
||||
msgid "IP Lock"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:20 dns/forms.py:66 templates/cluster/workers_list.html:10
|
||||
#: templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Dirección IP"
|
||||
|
||||
#: cluster/forms.py:21
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:22
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:23 dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Nombre de host"
|
||||
|
||||
#: cluster/forms.py:25 cluster/forms.py:95 dns/forms.py:25 dns/forms.py:67
|
||||
#: dns/forms.py:109 templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Volver"
|
||||
|
||||
#: cluster/forms.py:26 dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: cluster/forms.py:54 cluster/forms.py:121 dns/forms.py:37 dns/forms.py:83
|
||||
#: dns/forms.py:134 templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: cluster/forms.py:69
|
||||
msgid "A worker with that name already exists."
|
||||
msgstr "Ya existe un worker con ese nombre."
|
||||
|
||||
#: cluster/forms.py:72
|
||||
msgid "IP Address is required when IP Lock is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:87
|
||||
msgid "Cluster Enabled"
|
||||
msgstr "Cluster habilitado"
|
||||
|
||||
#: cluster/forms.py:88
|
||||
msgid "Primary Enable WireGuard"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:89
|
||||
msgid "Stats Sync Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:90
|
||||
msgid "Stats Cache Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:91
|
||||
msgid "Cluster Mode"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:92
|
||||
msgid "Restart Mode"
|
||||
msgstr "Modo de reinicio"
|
||||
|
||||
#: cluster/forms.py:93
|
||||
msgid "Worker Display"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:134
|
||||
msgid "Stats sync interval must be at least 10 seconds."
|
||||
msgstr "El intervalo de sincronización de estadísticas debe ser de al menos 10 segundos."
|
||||
|
||||
#: cluster/forms.py:137
|
||||
msgid "Stats cache interval must be at least 10 seconds."
|
||||
msgstr "El intervalo de caché de estadísticas debe ser de al menos 10 segundos."
|
||||
|
||||
#: cluster/views.py:15 cluster/views.py:27 cluster/views.py:96
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Acceso denegado"
|
||||
|
||||
#: cluster/views.py:17 templates/base.html:185
|
||||
msgid "Cluster"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:33
|
||||
msgid "Edit Worker: "
|
||||
msgstr "Editar Worker: "
|
||||
|
||||
#: cluster/views.py:39
|
||||
msgid "Worker deleted|Worker deleted: "
|
||||
msgstr "Worker eliminado|Worker eliminado: "
|
||||
|
||||
#: cluster/views.py:42
|
||||
msgid "Worker not deleted|Invalid confirmation."
|
||||
msgstr "Worker no eliminado|Confirmación inválida."
|
||||
|
||||
#: cluster/views.py:46 templates/cluster/list_buttons.html:2
|
||||
msgid "Add Worker"
|
||||
msgstr "Agregar Worker"
|
||||
|
||||
#: cluster/views.py:57
|
||||
msgid "Worker updated|Worker updated: "
|
||||
msgstr "Worker actualizado|Worker actualizado: "
|
||||
|
||||
#: cluster/views.py:59
|
||||
msgid "Worker created|Worker created: "
|
||||
msgstr "Worker creado|Worker creado: "
|
||||
|
||||
#: cluster/views.py:64
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Worker Configuration</h5>\n"
|
||||
" <p>Configure a cluster worker node that will synchronize with this "
|
||||
"primary instance.</p>\n"
|
||||
" \n"
|
||||
" <h5>Name</h5>\n"
|
||||
" <p>A unique name to identify this worker.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Address</h5>\n"
|
||||
" <p>The IP address of the worker node. Leave empty if IP lock is "
|
||||
"disabled.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Lock</h5>\n"
|
||||
" <p>When enabled, the worker can only connect from the specified IP "
|
||||
"address.</p>\n"
|
||||
" \n"
|
||||
" <h5>Location Information</h5>\n"
|
||||
" <p>Optional location details for this worker (country, city, "
|
||||
"hostname).</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:99 templates/cluster/list_buttons.html:3
|
||||
msgid "Cluster Settings"
|
||||
msgstr "Configuración del Cluster"
|
||||
|
||||
#: cluster/views.py:105
|
||||
msgid "Cluster settings updated successfully."
|
||||
msgstr "Configuración del cluster actualizada exitosamente."
|
||||
|
||||
#: cluster/views.py:112
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Cluster Mode</h5>\n"
|
||||
" <p>Configure how the cluster operates and synchronizes "
|
||||
"configurations between nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Sync Intervals</h5>\n"
|
||||
" <p>Configure how frequently statistics and cache data are "
|
||||
"synchronized between cluster nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Restart Mode</h5>\n"
|
||||
" <p>Choose whether WireGuard services should be automatically "
|
||||
"restarted when configurations change, or if manual intervention is required."
|
||||
"</p>\n"
|
||||
" \n"
|
||||
" <h5>Worker Display</h5>\n"
|
||||
" <p>Select how workers should be identified in the interface - by "
|
||||
"name, server address, location, or a combination.</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||
msgid "Console"
|
||||
msgstr "Consola"
|
||||
@@ -65,64 +265,14 @@ msgstr "DNS primario"
|
||||
msgid "Secondary DNS"
|
||||
msgstr "DNS secundario"
|
||||
|
||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||
#: templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Volver"
|
||||
|
||||
#: dns/forms.py:29
|
||||
msgid "Resolver Settings"
|
||||
msgstr "Configuración de resolución"
|
||||
|
||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
||||
#: templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Nombre de host"
|
||||
|
||||
#: dns/forms.py:66 templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Dirección IP"
|
||||
|
||||
#: dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: dns/forms.py:75
|
||||
msgid "Static DNS"
|
||||
msgstr "DNS estático"
|
||||
|
||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: dns/forms.py:112 firewall/forms.py:111
|
||||
#: templates/dns/static_host_list.html:69
|
||||
#: templates/firewall/manage_redirect_rule.html:18
|
||||
@@ -470,10 +620,6 @@ msgstr ""
|
||||
"Si encuentra algún problema con la traducción o desea solicitar un nuevo "
|
||||
"idioma, por favor abra un"
|
||||
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Acceso denegado"
|
||||
|
||||
#: templates/access_denied.html:12
|
||||
msgid "Sorry, you do not have permission to access this page."
|
||||
msgstr "Lo siento, no tienes permiso para acceder a esta página."
|
||||
@@ -508,9 +654,10 @@ msgstr "Has cerrado sesión correctamente."
|
||||
msgid "Login again"
|
||||
msgstr "Iniciar sesión de nuevo"
|
||||
|
||||
#: templates/base.html:112 templates/dns/static_host_list.html:72
|
||||
#: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80
|
||||
#: vpn_invite/forms.py:81 vpn_invite/forms.py:82
|
||||
#: templates/base.html:112 templates/cluster/workers_list.html:9
|
||||
#: templates/dns/static_host_list.html:72 vpn_invite/forms.py:78
|
||||
#: vpn_invite/forms.py:79 vpn_invite/forms.py:80 vpn_invite/forms.py:81
|
||||
#: vpn_invite/forms.py:82
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@@ -523,11 +670,11 @@ msgstr "Gestión de usuarios"
|
||||
msgid "VPN Invite"
|
||||
msgstr "Invitación VPN"
|
||||
|
||||
#: templates/base.html:254
|
||||
#: templates/base.html:263
|
||||
msgid "Update Required"
|
||||
msgstr "Actualización requerida"
|
||||
|
||||
#: templates/base.html:256
|
||||
#: templates/base.html:265
|
||||
msgid ""
|
||||
"Your WireGuard settings have been modified. To apply these changes, please "
|
||||
"update the configuration and reload the WireGuard service."
|
||||
@@ -535,22 +682,78 @@ msgstr ""
|
||||
"Tus ajustes de WireGuard han sido modificados. Para aplicar los cambios, "
|
||||
"actualiza la configuración y recarga el servicio WireGuard."
|
||||
|
||||
#: templates/base.html:265
|
||||
#: templates/base.html:274
|
||||
msgid "Update and restart service"
|
||||
msgstr "Actualizar y reiniciar servicio"
|
||||
|
||||
#: templates/base.html:273
|
||||
#: templates/base.html:282
|
||||
msgid "Update and reload service"
|
||||
msgstr "Actualizar y recargar servicio"
|
||||
|
||||
#: templates/base.html:286
|
||||
#: templates/base.html:295
|
||||
msgid "Update Available"
|
||||
msgstr "Actualización disponible"
|
||||
|
||||
#: templates/base.html:288
|
||||
#: templates/base.html:297
|
||||
msgid "Version"
|
||||
msgstr "Versión"
|
||||
|
||||
#: templates/cluster/workers_list.html:11
|
||||
msgid "Location"
|
||||
msgstr "Ubicación"
|
||||
|
||||
#: templates/cluster/workers_list.html:12
|
||||
msgid "Last Seen"
|
||||
msgstr "Visto por última vez"
|
||||
|
||||
#: templates/cluster/workers_list.html:13
|
||||
msgid "Config Version"
|
||||
msgstr "Versión de configuración"
|
||||
|
||||
#: templates/cluster/workers_list.html:14
|
||||
msgid "Options"
|
||||
msgstr "Opciones"
|
||||
|
||||
#: templates/cluster/workers_list.html:26 vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Deshabilitado"
|
||||
|
||||
#: templates/cluster/workers_list.html:33
|
||||
msgid "IP Lock Enabled"
|
||||
msgstr "Bloqueo de IP habilitado"
|
||||
|
||||
#: templates/cluster/workers_list.html:36
|
||||
#: templates/cluster/workers_list.html:43
|
||||
msgid "Not set"
|
||||
msgstr "No establecido"
|
||||
|
||||
#: templates/cluster/workers_list.html:50
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:57
|
||||
msgid "Config Pending"
|
||||
msgstr "Configuración pendiente"
|
||||
|
||||
#: templates/cluster/workers_list.html:65
|
||||
msgid "Force Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:70
|
||||
msgid "Force Restart"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:74
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: templates/cluster/workers_list.html:79
|
||||
msgid "No workers configured"
|
||||
msgstr ""
|
||||
|
||||
#: templates/console/console.html:12
|
||||
msgid "Clear"
|
||||
msgstr "Limpiar"
|
||||
@@ -591,12 +794,6 @@ msgstr "Última actualización"
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: templates/dns/static_host_list.html:116
|
||||
msgid "Add Filter List"
|
||||
msgstr "Añadir lista de filtro"
|
||||
@@ -1575,14 +1772,6 @@ msgstr ""
|
||||
msgid "Please type the username to proceed."
|
||||
msgstr "Por favor escribe el nombre de usuario para continuar."
|
||||
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#: vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Deshabilitado"
|
||||
|
||||
#: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70
|
||||
#: vpn_invite/forms.py:71 vpn_invite/forms.py:72
|
||||
msgid "URL"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-12 11:30-0300\n"
|
||||
"POT-Creation-Date: 2025-08-14 22:07-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,6 +17,210 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: cluster/forms.py:17 dns/forms.py:111 templates/cluster/workers_list.html:8
|
||||
#: templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: cluster/forms.py:18 templates/cluster/workers_list.html:24
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: cluster/forms.py:19
|
||||
msgid "IP Lock"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:20 dns/forms.py:66 templates/cluster/workers_list.html:10
|
||||
#: templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Adresse IP"
|
||||
|
||||
#: cluster/forms.py:21
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:22
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:23 dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Nom d’hôte"
|
||||
|
||||
#: cluster/forms.py:25 cluster/forms.py:95 dns/forms.py:25 dns/forms.py:67
|
||||
#: dns/forms.py:109 templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: cluster/forms.py:26 dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: cluster/forms.py:54 cluster/forms.py:121 dns/forms.py:37 dns/forms.py:83
|
||||
#: dns/forms.py:134 templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: cluster/forms.py:69
|
||||
msgid "A worker with that name already exists."
|
||||
msgstr "Un worker avec ce nom existe déjà."
|
||||
|
||||
#: cluster/forms.py:72
|
||||
msgid "IP Address is required when IP Lock is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:87
|
||||
msgid "Cluster Enabled"
|
||||
msgstr "Cluster activé"
|
||||
|
||||
#: cluster/forms.py:88
|
||||
msgid "Primary Enable WireGuard"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:89
|
||||
msgid "Stats Sync Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:90
|
||||
msgid "Stats Cache Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:91
|
||||
msgid "Cluster Mode"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:92
|
||||
msgid "Restart Mode"
|
||||
msgstr "Mode de redémarrage"
|
||||
|
||||
#: cluster/forms.py:93
|
||||
msgid "Worker Display"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:134
|
||||
msgid "Stats sync interval must be at least 10 seconds."
|
||||
msgstr "L'intervalle de synchronisation des statistiques doit être d'au moins 10 secondes."
|
||||
"L’intervalle d’actualisation de la liste des peers doit être d’au moins 5 "
|
||||
"secondes."
|
||||
|
||||
#: cluster/forms.py:137
|
||||
msgid "Stats cache interval must be at least 10 seconds."
|
||||
msgstr "L'intervalle de cache des statistiques doit être d'au moins 10 secondes."
|
||||
"L’intervalle d’actualisation de la liste des peers doit être d’au moins 5 "
|
||||
"secondes."
|
||||
|
||||
#: cluster/views.py:15 cluster/views.py:27 cluster/views.py:96
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Accès refusé"
|
||||
|
||||
#: cluster/views.py:17 templates/base.html:185
|
||||
msgid "Cluster"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:33
|
||||
msgid "Edit Worker: "
|
||||
msgstr "Modifier Worker : "
|
||||
|
||||
#: cluster/views.py:39
|
||||
msgid "Worker deleted|Worker deleted: "
|
||||
msgstr "Worker supprimé|Worker supprimé : "
|
||||
|
||||
#: cluster/views.py:42
|
||||
msgid "Worker not deleted|Invalid confirmation."
|
||||
msgstr "Worker non supprimé|Confirmation invalide."
|
||||
|
||||
#: cluster/views.py:46 templates/cluster/list_buttons.html:2
|
||||
msgid "Add Worker"
|
||||
msgstr "Ajouter Worker"
|
||||
|
||||
#: cluster/views.py:57
|
||||
msgid "Worker updated|Worker updated: "
|
||||
msgstr "Worker mis à jour|Worker mis à jour : "
|
||||
|
||||
#: cluster/views.py:59
|
||||
msgid "Worker created|Worker created: "
|
||||
msgstr "Worker créé|Worker créé : "
|
||||
|
||||
#: cluster/views.py:64
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Worker Configuration</h5>\n"
|
||||
" <p>Configure a cluster worker node that will synchronize with this "
|
||||
"primary instance.</p>\n"
|
||||
" \n"
|
||||
" <h5>Name</h5>\n"
|
||||
" <p>A unique name to identify this worker.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Address</h5>\n"
|
||||
" <p>The IP address of the worker node. Leave empty if IP lock is "
|
||||
"disabled.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Lock</h5>\n"
|
||||
" <p>When enabled, the worker can only connect from the specified IP "
|
||||
"address.</p>\n"
|
||||
" \n"
|
||||
" <h5>Location Information</h5>\n"
|
||||
" <p>Optional location details for this worker (country, city, "
|
||||
"hostname).</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:99 templates/cluster/list_buttons.html:3
|
||||
msgid "Cluster Settings"
|
||||
msgstr "Paramètres du Cluster"
|
||||
|
||||
#: cluster/views.py:105
|
||||
msgid "Cluster settings updated successfully."
|
||||
msgstr "Paramètres du cluster mis à jour avec succès."
|
||||
|
||||
#: cluster/views.py:112
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Cluster Mode</h5>\n"
|
||||
" <p>Configure how the cluster operates and synchronizes "
|
||||
"configurations between nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Sync Intervals</h5>\n"
|
||||
" <p>Configure how frequently statistics and cache data are "
|
||||
"synchronized between cluster nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Restart Mode</h5>\n"
|
||||
" <p>Choose whether WireGuard services should be automatically "
|
||||
"restarted when configurations change, or if manual intervention is required."
|
||||
"</p>\n"
|
||||
" \n"
|
||||
" <h5>Worker Display</h5>\n"
|
||||
" <p>Select how workers should be identified in the interface - by "
|
||||
"name, server address, location, or a combination.</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
@@ -65,64 +269,14 @@ msgstr "DNS primaire"
|
||||
msgid "Secondary DNS"
|
||||
msgstr "DNS secondaire"
|
||||
|
||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||
#: templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: dns/forms.py:29
|
||||
msgid "Resolver Settings"
|
||||
msgstr "Paramètres du résolveur"
|
||||
|
||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
||||
#: templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Nom d’hôte"
|
||||
|
||||
#: dns/forms.py:66 templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Adresse IP"
|
||||
|
||||
#: dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: dns/forms.py:75
|
||||
msgid "Static DNS"
|
||||
msgstr "DNS statique"
|
||||
|
||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: dns/forms.py:112 firewall/forms.py:111
|
||||
#: templates/dns/static_host_list.html:69
|
||||
#: templates/firewall/manage_redirect_rule.html:18
|
||||
@@ -472,10 +626,6 @@ msgstr ""
|
||||
"Si vous constatez un problème dans la traduction ou souhaitez demander une "
|
||||
"nouvelle langue, veuillez ouvrir une"
|
||||
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Accès refusé"
|
||||
|
||||
#: templates/access_denied.html:12
|
||||
msgid "Sorry, you do not have permission to access this page."
|
||||
msgstr "Désolé, vous n’avez pas l’autorisation d’accéder à cette page."
|
||||
@@ -510,9 +660,10 @@ msgstr "Vous avez été déconnecté avec succès."
|
||||
msgid "Login again"
|
||||
msgstr "Se reconnecter"
|
||||
|
||||
#: templates/base.html:112 templates/dns/static_host_list.html:72
|
||||
#: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80
|
||||
#: vpn_invite/forms.py:81 vpn_invite/forms.py:82
|
||||
#: templates/base.html:112 templates/cluster/workers_list.html:9
|
||||
#: templates/dns/static_host_list.html:72 vpn_invite/forms.py:78
|
||||
#: vpn_invite/forms.py:79 vpn_invite/forms.py:80 vpn_invite/forms.py:81
|
||||
#: vpn_invite/forms.py:82
|
||||
msgid "Status"
|
||||
msgstr "Statut"
|
||||
|
||||
@@ -525,11 +676,11 @@ msgstr "Gestion des utilisateurs"
|
||||
msgid "VPN Invite"
|
||||
msgstr "Invitation VPN"
|
||||
|
||||
#: templates/base.html:254
|
||||
#: templates/base.html:263
|
||||
msgid "Update Required"
|
||||
msgstr "Mise à jour requise"
|
||||
|
||||
#: templates/base.html:256
|
||||
#: templates/base.html:265
|
||||
msgid ""
|
||||
"Your WireGuard settings have been modified. To apply these changes, please "
|
||||
"update the configuration and reload the WireGuard service."
|
||||
@@ -537,22 +688,78 @@ msgstr ""
|
||||
"Les paramètres WireGuard ont été modifiés. Pour appliquer ces changements, "
|
||||
"mettez à jour la configuration et rechargez le service WireGuard."
|
||||
|
||||
#: templates/base.html:265
|
||||
#: templates/base.html:274
|
||||
msgid "Update and restart service"
|
||||
msgstr "Mettre à jour et redémarrer le service"
|
||||
|
||||
#: templates/base.html:273
|
||||
#: templates/base.html:282
|
||||
msgid "Update and reload service"
|
||||
msgstr "Mettre à jour et recharger le service"
|
||||
|
||||
#: templates/base.html:286
|
||||
#: templates/base.html:295
|
||||
msgid "Update Available"
|
||||
msgstr "Mise à jour disponible"
|
||||
|
||||
#: templates/base.html:288
|
||||
#: templates/base.html:297
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: templates/cluster/workers_list.html:11
|
||||
msgid "Location"
|
||||
msgstr "Emplacement"
|
||||
|
||||
#: templates/cluster/workers_list.html:12
|
||||
msgid "Last Seen"
|
||||
msgstr "Dernière connexion"
|
||||
|
||||
#: templates/cluster/workers_list.html:13
|
||||
msgid "Config Version"
|
||||
msgstr "Version de configuration"
|
||||
|
||||
#: templates/cluster/workers_list.html:14
|
||||
msgid "Options"
|
||||
msgstr "Options"
|
||||
|
||||
#: templates/cluster/workers_list.html:26 vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Désactivé"
|
||||
|
||||
#: templates/cluster/workers_list.html:33
|
||||
msgid "IP Lock Enabled"
|
||||
msgstr "Verrouillage IP activé"
|
||||
|
||||
#: templates/cluster/workers_list.html:36
|
||||
#: templates/cluster/workers_list.html:43
|
||||
msgid "Not set"
|
||||
msgstr "Non défini"
|
||||
|
||||
#: templates/cluster/workers_list.html:50
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:57
|
||||
msgid "Config Pending"
|
||||
msgstr "Configuration en attente"
|
||||
|
||||
#: templates/cluster/workers_list.html:65
|
||||
msgid "Force Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:70
|
||||
msgid "Force Restart"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:74
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
|
||||
#: templates/cluster/workers_list.html:79
|
||||
msgid "No workers configured"
|
||||
msgstr ""
|
||||
|
||||
#: templates/console/console.html:12
|
||||
msgid "Clear"
|
||||
msgstr "Effacer"
|
||||
@@ -593,12 +800,6 @@ msgstr "Dernière mise à jour"
|
||||
msgid "Update"
|
||||
msgstr "Mettre à jour"
|
||||
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
|
||||
#: templates/dns/static_host_list.html:116
|
||||
msgid "Add Filter List"
|
||||
msgstr "Ajouter une liste de filtres"
|
||||
@@ -1273,8 +1474,8 @@ msgid ""
|
||||
"This configuration does not contain a private key. You must add the private "
|
||||
"key manually in your client before using it."
|
||||
msgstr ""
|
||||
"Cette configuration ne contient pas de clé privée. Vous devez ajouter la "
|
||||
"clé privée manuellement dans votre client avant de l'utiliser."
|
||||
"Cette configuration ne contient pas de clé privée. Vous devez ajouter la clé "
|
||||
"privée manuellement dans votre client avant de l'utiliser."
|
||||
|
||||
#: templates/wireguard/wireguard_peer_list.html:590
|
||||
msgid ""
|
||||
@@ -1582,14 +1783,6 @@ msgstr ""
|
||||
msgid "Please type the username to proceed."
|
||||
msgstr "Veuillez saisir le nom d’utilisateur pour continuer."
|
||||
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Désactivé"
|
||||
|
||||
#: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70
|
||||
#: vpn_invite/forms.py:71 vpn_invite/forms.py:72
|
||||
msgid "URL"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-12 11:30-0300\n"
|
||||
"POT-Creation-Date: 2025-08-14 22:07-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,6 +17,206 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: cluster/forms.py:17 dns/forms.py:111 templates/cluster/workers_list.html:8
|
||||
#: templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: cluster/forms.py:18 templates/cluster/workers_list.html:24
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#: cluster/forms.py:19
|
||||
msgid "IP Lock"
|
||||
msgstr "Bloqueio de IP"
|
||||
|
||||
#: cluster/forms.py:20 dns/forms.py:66 templates/cluster/workers_list.html:10
|
||||
#: templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Endereço IP"
|
||||
|
||||
#: cluster/forms.py:21
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#: cluster/forms.py:22
|
||||
msgid "City"
|
||||
msgstr "Cidade"
|
||||
|
||||
#: cluster/forms.py:23 dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Endereço do Host"
|
||||
|
||||
#: cluster/forms.py:25 cluster/forms.py:95 dns/forms.py:25 dns/forms.py:67
|
||||
#: dns/forms.py:109 templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: cluster/forms.py:26 dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: cluster/forms.py:54 cluster/forms.py:121 dns/forms.py:37 dns/forms.py:83
|
||||
#: dns/forms.py:134 templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Salvar"
|
||||
|
||||
#: cluster/forms.py:69
|
||||
msgid "A worker with that name already exists."
|
||||
msgstr "Um worker com esse nome já existe."
|
||||
|
||||
#: cluster/forms.py:72
|
||||
msgid "IP Address is required when IP Lock is enabled."
|
||||
msgstr "Endereço IP é obrigatório quando Bloqueio de IP está habilitado."
|
||||
|
||||
#: cluster/forms.py:87
|
||||
msgid "Cluster Enabled"
|
||||
msgstr "Cluster Habilitado"
|
||||
|
||||
#: cluster/forms.py:88
|
||||
msgid "Primary Enable WireGuard"
|
||||
msgstr "Habilitar WireGuard Principal"
|
||||
|
||||
#: cluster/forms.py:89
|
||||
msgid "Stats Sync Interval (seconds)"
|
||||
msgstr "Intervalo de Sincronização de Estatísticas (segundos)"
|
||||
|
||||
#: cluster/forms.py:90
|
||||
msgid "Stats Cache Interval (seconds)"
|
||||
msgstr "Intervalo de Cache de Estatísticas (segundos)"
|
||||
|
||||
#: cluster/forms.py:91
|
||||
msgid "Cluster Mode"
|
||||
msgstr "Modo do Cluster"
|
||||
|
||||
#: cluster/forms.py:92
|
||||
msgid "Restart Mode"
|
||||
msgstr "Modo de Reinicialização"
|
||||
|
||||
#: cluster/forms.py:93
|
||||
msgid "Worker Display"
|
||||
msgstr "Exibição do Worker"
|
||||
|
||||
#: cluster/forms.py:134
|
||||
msgid "Stats sync interval must be at least 10 seconds."
|
||||
msgstr "Intervalo de sincronização de estatísticas deve ser de pelo menos 10 segundos."
|
||||
|
||||
#: cluster/forms.py:137
|
||||
msgid "Stats cache interval must be at least 10 seconds."
|
||||
msgstr "Intervalo de cache de estatísticas deve ser de pelo menos 10 segundos."
|
||||
|
||||
#: cluster/views.py:15 cluster/views.py:27 cluster/views.py:96
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Acesso Negado"
|
||||
|
||||
#: cluster/views.py:17 templates/base.html:185
|
||||
msgid "Cluster"
|
||||
msgstr "Cluster"
|
||||
|
||||
#: cluster/views.py:33
|
||||
msgid "Edit Worker: "
|
||||
msgstr "Editar Worker: "
|
||||
|
||||
#: cluster/views.py:39
|
||||
msgid "Worker deleted|Worker deleted: "
|
||||
msgstr "Worker excluído|Worker excluído: "
|
||||
|
||||
#: cluster/views.py:42
|
||||
msgid "Worker not deleted|Invalid confirmation."
|
||||
msgstr "Worker não foi excluído|Confirmação inválida."
|
||||
|
||||
#: cluster/views.py:46 templates/cluster/list_buttons.html:2
|
||||
msgid "Add Worker"
|
||||
msgstr "Adicionar Worker"
|
||||
|
||||
#: cluster/views.py:57
|
||||
msgid "Worker updated|Worker updated: "
|
||||
msgstr "Worker atualizado|Worker atualizado: "
|
||||
|
||||
#: cluster/views.py:59
|
||||
msgid "Worker created|Worker created: "
|
||||
msgstr "Worker criado|Worker criado: "
|
||||
|
||||
#: cluster/views.py:64
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Worker Configuration</h5>\n"
|
||||
" <p>Configure a cluster worker node that will synchronize with this "
|
||||
"primary instance.</p>\n"
|
||||
" \n"
|
||||
" <h5>Name</h5>\n"
|
||||
" <p>A unique name to identify this worker.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Address</h5>\n"
|
||||
" <p>The IP address of the worker node. Leave empty if IP lock is "
|
||||
"disabled.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Lock</h5>\n"
|
||||
" <p>When enabled, the worker can only connect from the specified IP "
|
||||
"address.</p>\n"
|
||||
" \n"
|
||||
" <h5>Location Information</h5>\n"
|
||||
" <p>Optional location details for this worker (country, city, "
|
||||
"hostname).</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:99 templates/cluster/list_buttons.html:3
|
||||
msgid "Cluster Settings"
|
||||
msgstr "Configurações do Cluster"
|
||||
|
||||
#: cluster/views.py:105
|
||||
msgid "Cluster settings updated successfully."
|
||||
msgstr "Configurações do cluster atualizadas com sucesso."
|
||||
|
||||
#: cluster/views.py:112
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Cluster Mode</h5>\n"
|
||||
" <p>Configure how the cluster operates and synchronizes "
|
||||
"configurations between nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Sync Intervals</h5>\n"
|
||||
" <p>Configure how frequently statistics and cache data are "
|
||||
"synchronized between cluster nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Restart Mode</h5>\n"
|
||||
" <p>Choose whether WireGuard services should be automatically "
|
||||
"restarted when configurations change, or if manual intervention is required."
|
||||
"</p>\n"
|
||||
" \n"
|
||||
" <h5>Worker Display</h5>\n"
|
||||
" <p>Select how workers should be identified in the interface - by "
|
||||
"name, server address, location, or a combination.</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||
msgid "Console"
|
||||
msgstr "Console"
|
||||
@@ -65,64 +265,14 @@ msgstr "DNS Primário"
|
||||
msgid "Secondary DNS"
|
||||
msgstr "DNS Secundário"
|
||||
|
||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||
#: templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: dns/forms.py:29
|
||||
msgid "Resolver Settings"
|
||||
msgstr "Resolução de DNS"
|
||||
|
||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
||||
#: templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Salvar"
|
||||
|
||||
#: dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Endereço do Host"
|
||||
|
||||
#: dns/forms.py:66 templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "Endereço IP"
|
||||
|
||||
#: dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: dns/forms.py:75
|
||||
msgid "Static DNS"
|
||||
msgstr "DNS Estático"
|
||||
|
||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: dns/forms.py:112 firewall/forms.py:111
|
||||
#: templates/dns/static_host_list.html:69
|
||||
#: templates/firewall/manage_redirect_rule.html:18
|
||||
@@ -471,10 +621,6 @@ msgstr ""
|
||||
"Se encontrar algum problema na tradução ou quiser solicitar um novo idioma, "
|
||||
"por favor abra uma"
|
||||
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Acesso Negado"
|
||||
|
||||
#: templates/access_denied.html:12
|
||||
msgid "Sorry, you do not have permission to access this page."
|
||||
msgstr "Desculpe, você não tem permissão para acessar esta página."
|
||||
@@ -509,9 +655,10 @@ msgstr "Você foi desconectado com sucesso."
|
||||
msgid "Login again"
|
||||
msgstr "Acessar novamente"
|
||||
|
||||
#: templates/base.html:112 templates/dns/static_host_list.html:72
|
||||
#: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80
|
||||
#: vpn_invite/forms.py:81 vpn_invite/forms.py:82
|
||||
#: templates/base.html:112 templates/cluster/workers_list.html:9
|
||||
#: templates/dns/static_host_list.html:72 vpn_invite/forms.py:78
|
||||
#: vpn_invite/forms.py:79 vpn_invite/forms.py:80 vpn_invite/forms.py:81
|
||||
#: vpn_invite/forms.py:82
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@@ -524,11 +671,11 @@ msgstr "Configurar Usuários"
|
||||
msgid "VPN Invite"
|
||||
msgstr "Convite para VPN"
|
||||
|
||||
#: templates/base.html:254
|
||||
#: templates/base.html:263
|
||||
msgid "Update Required"
|
||||
msgstr "Atualização Necessária"
|
||||
|
||||
#: templates/base.html:256
|
||||
#: templates/base.html:265
|
||||
msgid ""
|
||||
"Your WireGuard settings have been modified. To apply these changes, please "
|
||||
"update the configuration and reload the WireGuard service."
|
||||
@@ -536,22 +683,78 @@ msgstr ""
|
||||
"Suas configurações do WireGuard foram modificadas. Para aplicar essas "
|
||||
"mudanças, atualize a configuração e recarregue o serviço WireGuard."
|
||||
|
||||
#: templates/base.html:265
|
||||
#: templates/base.html:274
|
||||
msgid "Update and restart service"
|
||||
msgstr "Atualizar e reiniciar o serviço"
|
||||
|
||||
#: templates/base.html:273
|
||||
#: templates/base.html:282
|
||||
msgid "Update and reload service"
|
||||
msgstr "Atualizar e recarregar o serviço"
|
||||
|
||||
#: templates/base.html:286
|
||||
#: templates/base.html:295
|
||||
msgid "Update Available"
|
||||
msgstr "Atualização Disponível"
|
||||
|
||||
#: templates/base.html:288
|
||||
#: templates/base.html:297
|
||||
msgid "Version"
|
||||
msgstr "Versão"
|
||||
|
||||
#: templates/cluster/workers_list.html:11
|
||||
msgid "Location"
|
||||
msgstr "Localização"
|
||||
|
||||
#: templates/cluster/workers_list.html:12
|
||||
msgid "Last Seen"
|
||||
msgstr "Visto pela Última Vez"
|
||||
|
||||
#: templates/cluster/workers_list.html:13
|
||||
msgid "Config Version"
|
||||
msgstr "Versão da Configuração"
|
||||
|
||||
#: templates/cluster/workers_list.html:14
|
||||
msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: templates/cluster/workers_list.html:26 vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Desabilitado"
|
||||
|
||||
#: templates/cluster/workers_list.html:33
|
||||
msgid "IP Lock Enabled"
|
||||
msgstr "Bloqueio de IP Habilitado"
|
||||
|
||||
#: templates/cluster/workers_list.html:36
|
||||
#: templates/cluster/workers_list.html:43
|
||||
msgid "Not set"
|
||||
msgstr "Não definido"
|
||||
|
||||
#: templates/cluster/workers_list.html:50
|
||||
msgid "Never"
|
||||
msgstr "Nunca"
|
||||
|
||||
#: templates/cluster/workers_list.html:57
|
||||
msgid "Config Pending"
|
||||
msgstr "Configuração Pendente"
|
||||
|
||||
#: templates/cluster/workers_list.html:65
|
||||
msgid "Force Reload"
|
||||
msgstr "Forçar Recarga"
|
||||
|
||||
#: templates/cluster/workers_list.html:70
|
||||
msgid "Force Restart"
|
||||
msgstr "Forçar Reinicialização"
|
||||
|
||||
#: templates/cluster/workers_list.html:74
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: templates/cluster/workers_list.html:79
|
||||
msgid "No workers configured"
|
||||
msgstr ""
|
||||
|
||||
#: templates/console/console.html:12
|
||||
msgid "Clear"
|
||||
msgstr "Limpar"
|
||||
@@ -592,12 +795,6 @@ msgstr "Última Atualização"
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: templates/dns/static_host_list.html:116
|
||||
msgid "Add Filter List"
|
||||
msgstr "Adicionar Lista de Filtro"
|
||||
@@ -1590,14 +1787,6 @@ msgstr ""
|
||||
msgid "Please type the username to proceed."
|
||||
msgstr "Por favor, digite o nome de usuário para prosseguir."
|
||||
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#: vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Desabilitado"
|
||||
|
||||
#: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70
|
||||
#: vpn_invite/forms.py:71 vpn_invite/forms.py:72
|
||||
msgid "URL"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-12 11:30-0300\n"
|
||||
"POT-Creation-Date: 2025-08-14 22:07-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,6 +18,206 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n "
|
||||
">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
#: cluster/forms.py:17 dns/forms.py:111 templates/cluster/workers_list.html:8
|
||||
#: templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Názov"
|
||||
|
||||
#: cluster/forms.py:18 templates/cluster/workers_list.html:24
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Povolené"
|
||||
|
||||
#: cluster/forms.py:19
|
||||
msgid "IP Lock"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:20 dns/forms.py:66 templates/cluster/workers_list.html:10
|
||||
#: templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "IP adresa"
|
||||
|
||||
#: cluster/forms.py:21
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:22
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:23 dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Názov hostiteľa"
|
||||
|
||||
#: cluster/forms.py:25 cluster/forms.py:95 dns/forms.py:25 dns/forms.py:67
|
||||
#: dns/forms.py:109 templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Späť"
|
||||
|
||||
#: cluster/forms.py:26 dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Vymazať"
|
||||
|
||||
#: cluster/forms.py:54 cluster/forms.py:121 dns/forms.py:37 dns/forms.py:83
|
||||
#: dns/forms.py:134 templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Uložiť"
|
||||
|
||||
#: cluster/forms.py:69
|
||||
msgid "A worker with that name already exists."
|
||||
msgstr "Worker s týmto názvom už existuje."
|
||||
|
||||
#: cluster/forms.py:72
|
||||
msgid "IP Address is required when IP Lock is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:87
|
||||
msgid "Cluster Enabled"
|
||||
msgstr "Cluster povolený"
|
||||
|
||||
#: cluster/forms.py:88
|
||||
msgid "Primary Enable WireGuard"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:89
|
||||
msgid "Stats Sync Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:90
|
||||
msgid "Stats Cache Interval (seconds)"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:91
|
||||
msgid "Cluster Mode"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:92
|
||||
msgid "Restart Mode"
|
||||
msgstr "Režim reštartu"
|
||||
|
||||
#: cluster/forms.py:93
|
||||
msgid "Worker Display"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/forms.py:134
|
||||
msgid "Stats sync interval must be at least 10 seconds."
|
||||
msgstr "Interval synchronizácie štatistík musí byť aspoň 10 sekúnd."
|
||||
|
||||
#: cluster/forms.py:137
|
||||
msgid "Stats cache interval must be at least 10 seconds."
|
||||
msgstr "Interval cache štatistík musí byť aspoň 10 sekúnd."
|
||||
|
||||
#: cluster/views.py:15 cluster/views.py:27 cluster/views.py:96
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Prístup zamietnutý"
|
||||
|
||||
#: cluster/views.py:17 templates/base.html:185
|
||||
msgid "Cluster"
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:33
|
||||
msgid "Edit Worker: "
|
||||
msgstr "Upraviť Worker: "
|
||||
|
||||
#: cluster/views.py:39
|
||||
msgid "Worker deleted|Worker deleted: "
|
||||
msgstr "Worker vymazaný|Worker vymazaný: "
|
||||
|
||||
#: cluster/views.py:42
|
||||
msgid "Worker not deleted|Invalid confirmation."
|
||||
msgstr "Worker nebol vymazaný|Neplatné potvrdenie."
|
||||
|
||||
#: cluster/views.py:46 templates/cluster/list_buttons.html:2
|
||||
msgid "Add Worker"
|
||||
msgstr "Pridať Worker"
|
||||
|
||||
#: cluster/views.py:57
|
||||
msgid "Worker updated|Worker updated: "
|
||||
msgstr "Worker aktualizovaný|Worker aktualizovaný: "
|
||||
|
||||
#: cluster/views.py:59
|
||||
msgid "Worker created|Worker created: "
|
||||
msgstr "Worker vytvorený|Worker vytvorený: "
|
||||
|
||||
#: cluster/views.py:64
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Worker Configuration</h5>\n"
|
||||
" <p>Configure a cluster worker node that will synchronize with this "
|
||||
"primary instance.</p>\n"
|
||||
" \n"
|
||||
" <h5>Name</h5>\n"
|
||||
" <p>A unique name to identify this worker.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Address</h5>\n"
|
||||
" <p>The IP address of the worker node. Leave empty if IP lock is "
|
||||
"disabled.</p>\n"
|
||||
" \n"
|
||||
" <h5>IP Lock</h5>\n"
|
||||
" <p>When enabled, the worker can only connect from the specified IP "
|
||||
"address.</p>\n"
|
||||
" \n"
|
||||
" <h5>Location Information</h5>\n"
|
||||
" <p>Optional location details for this worker (country, city, "
|
||||
"hostname).</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: cluster/views.py:99 templates/cluster/list_buttons.html:3
|
||||
msgid "Cluster Settings"
|
||||
msgstr "Nastavenia Clustra"
|
||||
|
||||
#: cluster/views.py:105
|
||||
msgid "Cluster settings updated successfully."
|
||||
msgstr "Nastavenia clustra úspešne aktualizované."
|
||||
|
||||
#: cluster/views.py:112
|
||||
msgid ""
|
||||
"\n"
|
||||
" <h5>Cluster Mode</h5>\n"
|
||||
" <p>Configure how the cluster operates and synchronizes "
|
||||
"configurations between nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Sync Intervals</h5>\n"
|
||||
" <p>Configure how frequently statistics and cache data are "
|
||||
"synchronized between cluster nodes.</p>\n"
|
||||
" \n"
|
||||
" <h5>Restart Mode</h5>\n"
|
||||
" <p>Choose whether WireGuard services should be automatically "
|
||||
"restarted when configurations change, or if manual intervention is required."
|
||||
"</p>\n"
|
||||
" \n"
|
||||
" <h5>Worker Display</h5>\n"
|
||||
" <p>Select how workers should be identified in the interface - by "
|
||||
"name, server address, location, or a combination.</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||
msgid "Console"
|
||||
msgstr "Konzola"
|
||||
@@ -66,64 +266,14 @@ msgstr "Primárny DNS"
|
||||
msgid "Secondary DNS"
|
||||
msgstr "Sekundárny DNS"
|
||||
|
||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||
#: templates/firewall/manage_firewall_rule.html:380
|
||||
#: templates/firewall/manage_firewall_settings.html:60
|
||||
#: templates/firewall/manage_redirect_rule.html:85
|
||||
#: templates/wireguard/wireguard_manage_ip.html:42
|
||||
#: templates/wireguard/wireguard_manage_peer.html:170
|
||||
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||
#: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326
|
||||
msgid "Back"
|
||||
msgstr "Späť"
|
||||
|
||||
#: dns/forms.py:29
|
||||
msgid "Resolver Settings"
|
||||
msgstr "Nastavenia DNS"
|
||||
|
||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
||||
#: templates/firewall/manage_firewall_rule.html:379
|
||||
#: templates/firewall/manage_firewall_settings.html:59
|
||||
#: templates/firewall/manage_redirect_rule.html:84
|
||||
#: templates/wireguard/wireguard_manage_ip.html:41
|
||||
#: templates/wireguard/wireguard_manage_peer.html:168
|
||||
#: templates/wireguard/wireguard_manage_server.html:130
|
||||
#: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191
|
||||
#: vpn_invite/forms.py:325
|
||||
msgid "Save"
|
||||
msgstr "Uložiť"
|
||||
|
||||
#: dns/forms.py:65 templates/dns/static_host_list.html:17
|
||||
msgid "Hostname"
|
||||
msgstr "Názov hostiteľa"
|
||||
|
||||
#: dns/forms.py:66 templates/dns/static_host_list.html:18
|
||||
#: templates/firewall/manage_redirect_rule.html:43
|
||||
#: templates/firewall/manage_redirect_rule.html:67
|
||||
#: templates/firewall/manage_redirect_rule.html:68
|
||||
#: templates/wireguard/wireguard_status.html:45
|
||||
msgid "IP Address"
|
||||
msgstr "IP adresa"
|
||||
|
||||
#: dns/forms.py:68 dns/forms.py:110
|
||||
#: templates/firewall/manage_firewall_rule.html:382
|
||||
#: templates/firewall/manage_redirect_rule.html:86
|
||||
#: templates/wireguard/wireguard_manage_ip.html:43
|
||||
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||
#: user_manager/forms.py:181
|
||||
msgid "Delete"
|
||||
msgstr "Vymazať"
|
||||
|
||||
#: dns/forms.py:75
|
||||
msgid "Static DNS"
|
||||
msgstr "Statický DNS"
|
||||
|
||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||
#: wireguard_peer/forms.py:10
|
||||
msgid "Name"
|
||||
msgstr "Názov"
|
||||
|
||||
#: dns/forms.py:112 firewall/forms.py:111
|
||||
#: templates/dns/static_host_list.html:69
|
||||
#: templates/firewall/manage_redirect_rule.html:18
|
||||
@@ -470,10 +620,6 @@ msgstr ""
|
||||
"Ak nájdete problémy s prekladom alebo si želáte požiadať o nový jazyk, "
|
||||
"prosím otvorte"
|
||||
|
||||
#: templates/access_denied.html:9
|
||||
msgid "Access Denied"
|
||||
msgstr "Prístup zamietnutý"
|
||||
|
||||
#: templates/access_denied.html:12
|
||||
msgid "Sorry, you do not have permission to access this page."
|
||||
msgstr "Prepáčte, nemáte oprávnenie na prístup k tejto stránke."
|
||||
@@ -506,9 +652,10 @@ msgstr "Boli ste úspešne odhlásený."
|
||||
msgid "Login again"
|
||||
msgstr "Prihlásiť sa znovu"
|
||||
|
||||
#: templates/base.html:112 templates/dns/static_host_list.html:72
|
||||
#: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80
|
||||
#: vpn_invite/forms.py:81 vpn_invite/forms.py:82
|
||||
#: templates/base.html:112 templates/cluster/workers_list.html:9
|
||||
#: templates/dns/static_host_list.html:72 vpn_invite/forms.py:78
|
||||
#: vpn_invite/forms.py:79 vpn_invite/forms.py:80 vpn_invite/forms.py:81
|
||||
#: vpn_invite/forms.py:82
|
||||
msgid "Status"
|
||||
msgstr "Stav"
|
||||
|
||||
@@ -521,11 +668,11 @@ msgstr "Správa používateľov"
|
||||
msgid "VPN Invite"
|
||||
msgstr "VPN pozvánka"
|
||||
|
||||
#: templates/base.html:254
|
||||
#: templates/base.html:263
|
||||
msgid "Update Required"
|
||||
msgstr "Aktualizácia potrebná"
|
||||
|
||||
#: templates/base.html:256
|
||||
#: templates/base.html:265
|
||||
msgid ""
|
||||
"Your WireGuard settings have been modified. To apply these changes, please "
|
||||
"update the configuration and reload the WireGuard service."
|
||||
@@ -533,22 +680,78 @@ msgstr ""
|
||||
"Vaše WireGuard nastavenia boli zmenené. Pre aplikovanie týchto zmien, prosím "
|
||||
"aktualizujte konfiguráciu a reštartujte WireGuard službu."
|
||||
|
||||
#: templates/base.html:265
|
||||
#: templates/base.html:274
|
||||
msgid "Update and restart service"
|
||||
msgstr "Aktualizovať a reštartovať službu"
|
||||
|
||||
#: templates/base.html:273
|
||||
#: templates/base.html:282
|
||||
msgid "Update and reload service"
|
||||
msgstr "Aktualizovať a znovu načítať službu"
|
||||
|
||||
#: templates/base.html:286
|
||||
#: templates/base.html:295
|
||||
msgid "Update Available"
|
||||
msgstr "Aktualizácia dostupná"
|
||||
|
||||
#: templates/base.html:288
|
||||
#: templates/base.html:297
|
||||
msgid "Version"
|
||||
msgstr "Verzia"
|
||||
|
||||
#: templates/cluster/workers_list.html:11
|
||||
msgid "Location"
|
||||
msgstr "Umiestnenie"
|
||||
|
||||
#: templates/cluster/workers_list.html:12
|
||||
msgid "Last Seen"
|
||||
msgstr "Naposledy videný"
|
||||
|
||||
#: templates/cluster/workers_list.html:13
|
||||
msgid "Config Version"
|
||||
msgstr "Verzia konfigurácie"
|
||||
|
||||
#: templates/cluster/workers_list.html:14
|
||||
msgid "Options"
|
||||
msgstr "Možnosti"
|
||||
|
||||
#: templates/cluster/workers_list.html:26 vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Zakázané"
|
||||
|
||||
#: templates/cluster/workers_list.html:33
|
||||
msgid "IP Lock Enabled"
|
||||
msgstr "IP zámok povolený"
|
||||
|
||||
#: templates/cluster/workers_list.html:36
|
||||
#: templates/cluster/workers_list.html:43
|
||||
msgid "Not set"
|
||||
msgstr "Nenastavené"
|
||||
|
||||
#: templates/cluster/workers_list.html:50
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:57
|
||||
msgid "Config Pending"
|
||||
msgstr "Konfigurácia čaká"
|
||||
|
||||
#: templates/cluster/workers_list.html:65
|
||||
msgid "Force Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:70
|
||||
msgid "Force Restart"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cluster/workers_list.html:74
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Upraviť"
|
||||
|
||||
#: templates/cluster/workers_list.html:79
|
||||
msgid "No workers configured"
|
||||
msgstr ""
|
||||
|
||||
#: templates/console/console.html:12
|
||||
msgid "Clear"
|
||||
msgstr "Vymazať"
|
||||
@@ -589,12 +792,6 @@ msgstr "Posledná aktualizácia"
|
||||
msgid "Update"
|
||||
msgstr "Aktualizovať"
|
||||
|
||||
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||
#: templates/user_manager/peer_group_list.html:35
|
||||
#: templates/wireguard/wireguard_peer_list.html:196
|
||||
msgid "Edit"
|
||||
msgstr "Upraviť"
|
||||
|
||||
#: templates/dns/static_host_list.html:116
|
||||
msgid "Add Filter List"
|
||||
msgstr "Pridať filter zoznam"
|
||||
@@ -1584,14 +1781,6 @@ msgstr ""
|
||||
msgid "Please type the username to proceed."
|
||||
msgstr "Prosím zadajte používateľské meno na pokračovanie."
|
||||
|
||||
#: vpn_invite/forms.py:49 vpn_invite/forms.py:294
|
||||
msgid "Enabled"
|
||||
msgstr "Povolené"
|
||||
|
||||
#: vpn_invite/forms.py:49
|
||||
msgid "Disabled"
|
||||
msgstr "Zakázané"
|
||||
|
||||
#: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70
|
||||
#: vpn_invite/forms.py:71 vpn_invite/forms.py:72
|
||||
msgid "URL"
|
||||
|
||||
@@ -178,6 +178,15 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/cluster/" class="nav-link {% if '/cluster/' in request.path %}active{% endif %}">
|
||||
<i class="fas fa-server nav-icon"></i>
|
||||
<p>
|
||||
{% trans 'Cluster' %}
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
86
templates/cluster/workers_list.html
Normal file
86
templates/cluster/workers_list.html
Normal file
@@ -0,0 +1,86 @@
|
||||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans 'Name' %}</th>
|
||||
<th>{% trans 'Status' %}</th>
|
||||
<th>{% trans 'IP Address' %}</th>
|
||||
<th>{% trans 'Location' %}</th>
|
||||
<th>{% trans 'Last Seen' %}</th>
|
||||
<th>{% trans 'Config Version' %}</th>
|
||||
<th colspan="2">{% trans 'Options' %}</th>
|
||||
<th><i class="far fa-edit"></i></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for worker in workers %}
|
||||
<tr>
|
||||
<td>{{ worker.name }}</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
{% if worker.enabled %}
|
||||
<span class="badge badge-success">{% trans 'Enabled' %}</span>
|
||||
{% else %}
|
||||
<span class="badge badge-secondary">{% trans 'Disabled' %}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if worker.ip_address %}
|
||||
{{ worker.ip_address }}
|
||||
{% if worker.ip_lock %}
|
||||
<i class="fas fa-lock text-warning" title="{% trans 'IP Lock Enabled' %}"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<span class="text-muted">{% trans 'Not set' %}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if worker.country or worker.city %}
|
||||
{% if worker.city %}{{ worker.city }}{% endif %}{% if worker.city and worker.country %}, {% endif %}{% if worker.country %}{{ worker.country }}{% endif %}
|
||||
{% else %}
|
||||
<span class="text-muted">{% trans 'Not set' %}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
{% if worker.workerstatus %}
|
||||
{{ worker.workerstatus.last_seen|date:"M d, H:i" }}
|
||||
{% else %}
|
||||
<span class="text-muted">{% trans 'Never' %}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
{% if worker.workerstatus %}
|
||||
{{ worker.workerstatus.config_version }}
|
||||
{% if worker.workerstatus.config_pending %}
|
||||
<i class="fas fa-clock text-warning" title="{% trans 'Config Pending' %}"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<span class="text-muted">0</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
{% if worker.force_reload %}
|
||||
<i class="fas fa-sync-alt text-info" title="{% trans 'Force Reload' %}"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
{% if worker.force_restart %}
|
||||
<i class="fas fa-power-off text-danger" title="{% trans 'Force Restart' %}"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 1%; white-space: nowrap;">
|
||||
<a href="/cluster/worker/manage/?uuid={{ worker.uuid }}" title="{% trans 'Edit' %}"><i class="far fa-edit"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr>
|
||||
<td colspan="9" class="text-center text-muted">{% trans 'No workers configured' %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="/cluster/worker/manage/" class="btn btn-primary">{% trans 'Add Worker' %}</a>
|
||||
<a href="/cluster/settings/" class="btn btn-secondary">{% trans 'Cluster Settings' %}</a>
|
||||
{% endblock %}
|
||||
@@ -21,6 +21,7 @@ from accounts.views import view_create_first_user, view_login, view_logout
|
||||
from api.views import api_instance_info, api_peer_invite, api_peer_list, cron_check_updates, \
|
||||
cron_update_peer_latest_handshake, peer_info, routerfleet_authenticate_session, routerfleet_get_user_token, \
|
||||
wireguard_status
|
||||
from cluster.views import cluster_main, cluster_settings, worker_manage
|
||||
from console.views import view_console
|
||||
from dns.views import view_apply_dns_config, view_manage_dns_settings, view_manage_filter_list, view_manage_static_host, \
|
||||
view_static_host_list, view_toggle_dns_list, view_update_dns_list
|
||||
@@ -87,5 +88,8 @@ urlpatterns = [
|
||||
path('vpn_invite/smtp_settings/', view_email_settings, name='email_settings'),
|
||||
path('invite/', view_public_vpn_invite, name='public_vpn_invite'),
|
||||
path('invite/download_config/', download_config_or_qrcode, name='download_config_or_qrcode'),
|
||||
path('cluster/', cluster_main, name='cluster_main'),
|
||||
path('cluster/worker/manage/', worker_manage, name='worker_manage'),
|
||||
path('cluster/settings/', cluster_settings, name='cluster_settings'),
|
||||
path('change_language/', view_change_language, name='change_language'),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user