diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo
index 06f0c84..5cc0640 100644
Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 91003d0..fbb42e7 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-15 17:20-0300\n"
+"POT-Creation-Date: 2026-03-18 10:58-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -33,17 +33,17 @@ msgstr "Zurück"
#: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129
#: routing_templates/forms.py:37
-#: templates/app_gateway/app_gateway_list.html:158
-#: templates/app_gateway/application_details.html:75
-#: templates/app_gateway/application_details.html:125
+#: templates/app_gateway/app_gateway_list.html:166
+#: templates/app_gateway/application_details.html:103
+#: templates/app_gateway/application_details.html:154
#: templates/firewall/manage_firewall_rule.html:382
#: templates/firewall/manage_redirect_rule.html:86
-#: templates/gatekeeper/gatekeeper_list.html:93
-#: templates/gatekeeper/gatekeeper_list.html:136
-#: templates/gatekeeper/gatekeeper_list.html:181
-#: templates/gatekeeper/gatekeeper_list.html:229
-#: templates/gatekeeper/gatekeeper_list.html:246
-#: templates/gatekeeper/gatekeeper_list.html:298
+#: templates/gatekeeper/gatekeeper_list.html:94
+#: templates/gatekeeper/gatekeeper_list.html:137
+#: templates/gatekeeper/gatekeeper_list.html:182
+#: templates/gatekeeper/gatekeeper_list.html:230
+#: templates/gatekeeper/gatekeeper_list.html:247
+#: templates/gatekeeper/gatekeeper_list.html:299
#: templates/scheduler/scheduleprofile_form.html:127
#: templates/scheduler/scheduleprofile_list.html:29
#: templates/wireguard/peer_list/peer_preview_modal.html:109
@@ -64,12 +64,12 @@ msgstr ""
"Sind Sie sicher, dass Sie das Token neu generieren möchten? Das alte Token "
"wird sofort ungültig."
-#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92
-#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237
-#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124
-#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70
-#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299
-#: gatekeeper/forms.py:329 gatekeeper/forms.py:360
+#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99
+#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241
+#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124
+#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71
+#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362
+#: gatekeeper/forms.py:392 gatekeeper/forms.py:423
#: routing_templates/forms.py:71 scheduler/forms.py:102
#: templates/firewall/manage_firewall_rule.html:379
#: templates/firewall/manage_firewall_settings.html:59
@@ -82,14 +82,14 @@ msgstr ""
msgid "Save"
msgstr "Speichern"
-#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106
-#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174
+#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113
+#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188
#: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47
-#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58
-#: templates/app_gateway/app_gateway_list.html:138
-#: templates/app_gateway/application_details.html:26
+#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66
+#: templates/app_gateway/app_gateway_list.html:146
+#: templates/app_gateway/application_details.html:35
#: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68
-#: templates/gatekeeper/gatekeeper_list.html:165
+#: templates/gatekeeper/gatekeeper_list.html:166
#: templates/routing_templates/list.html:8
#: templates/scheduler/scheduleprofile_list.html:13
#: templates/user_manager/peer_group_list.html:8
@@ -127,16 +127,16 @@ msgid "Enabled"
msgstr "Aktiviert"
#: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106
-#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68
-#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170
-#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267
-#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354
-#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18
-#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23
-#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121
-#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222
-#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334
-#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436
+#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83
+#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196
+#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297
+#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384
+#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18
+#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25
+#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125
+#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226
+#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350
+#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452
#: templates/access_denied.html:9
msgid "Access Denied"
msgstr "Zugriff verweigert"
@@ -207,20 +207,19 @@ msgstr ""
msgid "API Documentation"
msgstr "API-Dokumentation"
-#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27
-#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
-msgid "Display Name"
-msgstr "Anzeigename"
-
-#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59
-#: templates/app_gateway/application_details.html:28
+#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67
+#: templates/app_gateway/application_details.html:36
msgid "Upstream"
msgstr "Upstream"
-#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137
-#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279
-#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213
-#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361
+#: app_gateway/forms.py:20
+msgid "Allow invalid/self-signed certificate"
+msgstr ""
+
+#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145
+#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284
+#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240
+#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424
#: scheduler/forms.py:103
#: templates/app_gateway/access_policy_type_select.html:50
#: templates/generic_delete_confirmation.html:19
@@ -228,62 +227,69 @@ msgstr "Upstream"
msgid "Cancel"
msgstr "Abbrechen"
-#: app_gateway/forms.py:54
-msgid "This is a reserved system name."
-msgstr "Dies ist ein reservierter Systemname."
-
-#: app_gateway/forms.py:58
+#: app_gateway/forms.py:55
msgid "This upstream is reserved by the system."
msgstr "Dieser Upstream ist vom System reserviert."
-#: app_gateway/forms.py:61
+#: app_gateway/forms.py:58
msgid "Upstream URL cannot contain spaces."
msgstr "Upstream-URL darf keine Leerzeichen enthalten."
-#: app_gateway/forms.py:67
+#: app_gateway/forms.py:64
msgid "Enter a valid upstream URL starting with http:// or https://"
msgstr ""
"Geben Sie eine gültige Upstream-URL ein, die mit http:// oder https:// "
"beginnt."
-#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65
-#: templates/app_gateway/app_gateway_list.html:101
-#: templates/app_gateway/application_details.html:61
+#: app_gateway/forms.py:66
+msgid ""
+"Upstream must be a bare host address with no path, query or fragment. Use "
+"http://host or http://host:port"
+msgstr ""
+
+#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65
+#: templates/app_gateway/app_gateway_list.html:109
+#: templates/app_gateway/application_details.html:75
#: templates/dns/static_host_list.html:17
#: templates/wireguard/server_detail.html:39
msgid "Hostname"
msgstr "Hostname"
-#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139
+#: app_gateway/forms.py:84
+msgid "Hostname contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147
msgid "Policy Type"
msgstr "Richtlinientyp"
-#: app_gateway/forms.py:108
+#: app_gateway/forms.py:115
msgid "Allowed Groups"
msgstr "Erlaubte Gruppen"
-#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12
+#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13
msgid "Authentication Methods"
msgstr "Authentifizierungsmethoden"
-#: app_gateway/forms.py:188
+#: app_gateway/forms.py:196
msgid "Cannot select more than one Local Password authentication method."
msgstr ""
"Es kann nicht mehr als eine lokale Passwort-Authentifizierungsmethode "
"ausgewählt werden."
-#: app_gateway/forms.py:192
+#: app_gateway/forms.py:200
msgid ""
"Cannot select more than one OpenID Connect (OIDC) authentication method."
msgstr ""
"Es kann nicht mehr als eine OpenID Connect (OIDC)-Authentifizierungsmethode "
"ausgewählt werden."
-#: app_gateway/forms.py:196
+#: app_gateway/forms.py:204
msgid "Cannot select more than one TOTP authentication method."
-msgstr "Es kann nicht mehr als eine TOTP-Authentifizierungsmethode ausgewählt werden."
+msgstr ""
+"Es kann nicht mehr als eine TOTP-Authentifizierungsmethode ausgewählt werden."
-#: app_gateway/forms.py:200
+#: app_gateway/forms.py:208
msgid ""
"Cannot select both Local Password and OpenID Connect (OIDC) authentication "
"methods."
@@ -291,15 +297,7 @@ msgstr ""
"Die Authentifizierungsmethoden \"Lokales Passwort\" und OpenID Connect "
"(OIDC) können nicht gleichzeitig ausgewählt werden."
-#: app_gateway/forms.py:204
-msgid ""
-"TOTP must be combined with a Local Password or OpenID Connect authentication "
-"method."
-msgstr ""
-"TOTP muss mit einer lokalen Passwort- oder OpenID Connect-"
-"Authentifizierungsmethode kombiniert werden."
-
-#: app_gateway/forms.py:208
+#: app_gateway/forms.py:212
msgid ""
"At least one user group must be selected when using Local Password "
"authentication."
@@ -307,75 +305,102 @@ msgstr ""
"Bei Verwendung der lokalen Passwort-Authentifizierung muss mindestens eine "
"Benutzergruppe ausgewählt werden."
-#: app_gateway/forms.py:212
+#: app_gateway/forms.py:216
msgid "User groups can only be used with Local Password authentication."
msgstr ""
"Benutzergruppen können nur mit der lokalen Passwort-Authentifizierung "
"verwendet werden."
-#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62
-#: templates/app_gateway/application_details.html:31
+#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70
+#: templates/app_gateway/application_details.html:39
#: templates/firewall/firewall_nav_tabs.html:15
msgid "Default Policy"
msgstr "Standard‑Richtlinie"
-#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105
+#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134
msgid "Route Name"
msgstr "Routenname"
-#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106
+#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135
msgid "Path Prefix"
msgstr "Pfadpräfix"
-#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107
+#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136
msgid "Policy"
msgstr "Richtlinie"
-#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108
+#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137
msgid "Order"
msgstr "Reihenfolge"
-#: app_gateway/models.py:12
+#: app_gateway/forms.py:299
+#, fuzzy
+#| msgid "Invite URL must start with 'https://'."
+msgid "Path prefix must start with /."
+msgstr "Die Einladungs‑URL muss mit 'https://' beginnen."
+
+#: app_gateway/forms.py:301
+#, fuzzy
+#| msgid "Upstream URL cannot contain spaces."
+msgid "Path prefix cannot contain spaces."
+msgstr "Upstream-URL darf keine Leerzeichen enthalten."
+
+#: app_gateway/forms.py:303
+msgid "Path prefix contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:308
+#, fuzzy
+#| msgid "This upstream is reserved by the system."
+msgid "This path prefix is reserved by the system."
+msgstr "Dieser Upstream ist vom System reserviert."
+
+#: app_gateway/models.py:14
msgid "Upstream address, e.g.: http://10.188.18.27:3000"
msgstr "Upstream-Adresse, z. B.: http://10.188.18.27:3000"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:15
+msgid "Allow invalid or self-signed TLS certificates from the upstream"
+msgstr ""
+
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:19
msgid "Public"
msgstr "Öffentlich"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:30
msgid "Protected"
msgstr "Geschützt"
-#: app_gateway/models.py:45 gatekeeper/models.py:108
+#: app_gateway/models.py:53 gatekeeper/models.py:142
#: templates/app_gateway/access_policy_type_select.html:41
-#: templates/gatekeeper/gatekeeper_list.html:288
+#: templates/gatekeeper/gatekeeper_list.html:289
msgid "Deny"
msgstr "Verweigern"
-#: app_gateway/models.py:80
-msgid "Route identifier, used in export (e.g.: public_area)"
-msgstr "Routen-Identifikator, verwendet im Export (z.B.: public_area)"
-
-#: app_gateway/views.py:60
+#: app_gateway/views.py:75
msgid "Application Details"
msgstr "Anwendungsdetails"
-#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15
+#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204
+msgid "The WireGuard WebAdmin application cannot be modified."
+msgstr ""
+
+#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16
+#: templates/app_gateway/application_details.html:23
msgid "Edit Application"
msgstr "Anwendung bearbeiten"
-#: app_gateway/views.py:77
+#: app_gateway/views.py:95
msgid "Create Application"
msgstr "Anwendung erstellen"
-#: app_gateway/views.py:84
+#: app_gateway/views.py:102
msgid "Application saved successfully."
msgstr "Anwendung erfolgreich gespeichert."
-#: app_gateway/views.py:89
+#: app_gateway/views.py:107
msgid ""
"\n"
" Application
\n"
@@ -409,62 +434,67 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:120
+#: app_gateway/views.py:137
+msgid "The WireGuard WebAdmin application cannot be deleted."
+msgstr ""
+
+#: app_gateway/views.py:142
msgid "Application deleted successfully."
msgstr "Anwendung erfolgreich gelöscht."
-#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18
+#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19
+#: templates/app_gateway/application_details.html:26
msgid "Delete Application"
msgstr "Anwendung löschen"
-#: app_gateway/views.py:127
+#: app_gateway/views.py:149
#, python-format
msgid "Are you sure you want to delete the application \"%(name)s\"?"
msgstr "Sind Sie sicher, dass Sie die Anwendung \"%(name)s\" löschen möchten?"
-#: app_gateway/views.py:143
+#: app_gateway/views.py:165
msgid "Edit Application Host"
msgstr "Anwendungshost bearbeiten"
-#: app_gateway/views.py:147
+#: app_gateway/views.py:169
msgid "Add Application Host"
msgstr "Anwendungshost hinzufügen"
-#: app_gateway/views.py:156
+#: app_gateway/views.py:182
msgid "Application Host saved successfully."
msgstr "Anwendungshost erfolgreich gespeichert."
-#: app_gateway/views.py:179
+#: app_gateway/views.py:209
msgid "Application Host deleted successfully."
msgstr "Anwendungshost erfolgreich gelöscht."
-#: app_gateway/views.py:184
+#: app_gateway/views.py:214
msgid "Delete Application Host"
msgstr "Anwendungshost löschen"
-#: app_gateway/views.py:186
+#: app_gateway/views.py:216
#, python-format
msgid "Are you sure you want to delete the host \"%(hostname)s\"?"
msgstr "Sind Sie sicher, dass Sie den Host \"%(hostname)s\" löschen möchten?"
-#: app_gateway/views.py:197
+#: app_gateway/views.py:227
#: templates/app_gateway/access_policy_type_select.html:9
msgid "Select Access Policy Type"
msgstr "Zugriffsrichtlinientyp auswählen"
-#: app_gateway/views.py:212
+#: app_gateway/views.py:242
msgid "Edit Access Policy"
msgstr "Zugriffsrichtlinie bearbeiten"
-#: app_gateway/views.py:216
+#: app_gateway/views.py:246
msgid "Create Access Policy"
msgstr "Zugriffsrichtlinie erstellen"
-#: app_gateway/views.py:223
+#: app_gateway/views.py:253
msgid "Access Policy saved successfully."
msgstr "Zugriffsrichtlinie erfolgreich gespeichert."
-#: app_gateway/views.py:229
+#: app_gateway/views.py:259
msgid ""
"\n"
" Public Policy
\n"
@@ -478,7 +508,7 @@ msgstr ""
"Anwendung, ohne eine Authentifizierung zu erfordern.
\n"
" "
-#: app_gateway/views.py:237
+#: app_gateway/views.py:267
msgid ""
"\n"
" Deny Policy
\n"
@@ -491,7 +521,7 @@ msgstr ""
"übereinstimmenden Routen.\n"
" "
-#: app_gateway/views.py:245
+#: app_gateway/views.py:275
msgid ""
"\n"
" Protected Policy
\n"
@@ -522,11 +552,11 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:276
+#: app_gateway/views.py:306
msgid "Access Policy deleted successfully."
msgstr "Zugriffsrichtlinie erfolgreich gelöscht."
-#: app_gateway/views.py:278
+#: app_gateway/views.py:308
msgid ""
"Cannot delete this Access Policy because it is currently in use by an "
"Application Route or Application Default Policy."
@@ -534,57 +564,57 @@ msgstr ""
"Diese Zugriffsrichtlinie kann nicht gelöscht werden, da sie derzeit von "
"einer Anwendungsroute oder einer Standardanwendungsrichtlinie verwendet wird."
-#: app_gateway/views.py:283
+#: app_gateway/views.py:313
msgid "Delete Access Policy"
msgstr "Zugriffsrichtlinie löschen"
-#: app_gateway/views.py:285
+#: app_gateway/views.py:315
#, python-format
msgid "Are you sure you want to delete the access policy \"%(name)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die Zugriffsrichtlinie \"%(name)s\" löschen "
"möchten?"
-#: app_gateway/views.py:301
+#: app_gateway/views.py:331
msgid "Edit Application Default Policy"
msgstr "Standardrichtlinie der Anwendung bearbeiten"
-#: app_gateway/views.py:305
+#: app_gateway/views.py:335
msgid "Set Application Default Policy"
msgstr "Standardrichtlinie der Anwendung festlegen"
-#: app_gateway/views.py:314
+#: app_gateway/views.py:344
msgid "Application Default Policy saved successfully."
msgstr "Standardrichtlinie der Anwendung erfolgreich gespeichert."
-#: app_gateway/views.py:337
+#: app_gateway/views.py:367
msgid "Application Default Policy deleted successfully."
msgstr "Standardrichtlinie der Anwendung erfolgreich gelöscht."
-#: app_gateway/views.py:342
+#: app_gateway/views.py:372
msgid "Delete Application Default Policy"
msgstr "Standardrichtlinie der Anwendung löschen"
-#: app_gateway/views.py:344
+#: app_gateway/views.py:374
#, python-format
msgid "Are you sure you want to remove the default policy for \"%(name)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die Standardrichtlinie für \"%(name)s\" entfernen "
"möchten?"
-#: app_gateway/views.py:362
+#: app_gateway/views.py:392
msgid "Edit Application Route"
msgstr "Anwendungsroute bearbeiten"
-#: app_gateway/views.py:366
+#: app_gateway/views.py:396
msgid "Add Application Route"
msgstr "Anwendungsroute hinzufügen"
-#: app_gateway/views.py:375
+#: app_gateway/views.py:405
msgid "Application Route saved successfully."
msgstr "Anwendungsroute erfolgreich gespeichert."
-#: app_gateway/views.py:380
+#: app_gateway/views.py:410
msgid ""
"\n"
" Application Route
\n"
@@ -625,43 +655,42 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:413
+#: app_gateway/views.py:443
msgid "Application Route deleted successfully."
msgstr "Anwendungsroute erfolgreich gelöscht."
-#: app_gateway/views.py:418
+#: app_gateway/views.py:448
msgid "Delete Application Route"
msgstr "Anwendungsroute löschen"
-#: app_gateway/views.py:420
+#: app_gateway/views.py:450
#, python-format
msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?"
msgstr ""
"Sind Sie sicher, dass Sie die Route \"%(name)s\" (%(path)s) löschen möchten?"
-#: app_gateway/views.py:443
+#: app_gateway/views.py:468
+msgid ""
+"Configuration export is not available because Caddy is not enabled. To use "
+"App Gateway and Gatekeeper, start the application using docker-compose-"
+"caddy.yml."
+msgstr ""
+
+#: app_gateway/views.py:478
msgid "Configuration exported successfully."
msgstr "Konfiguration erfolgreich exportiert."
-#: app_gateway/views.py:445
-msgid ""
-"Caddy is not active. Configuration files were exported for debugging "
-"purposes."
-msgstr ""
-"Caddy ist nicht aktiv. Konfigurationsdateien wurden zu Debugging-Zwecken "
-"exportiert."
-
#: cluster/forms.py:20
msgid "IP Lock"
msgstr "IP-Sperre"
-#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271
+#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315
#: 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/gatekeeper/gatekeeper_list.html:272
+#: templates/gatekeeper/gatekeeper_list.html:273
#: templates/wireguard/wireguard_status.html:45
msgid "IP Address"
msgstr "IP‑Adresse"
@@ -938,7 +967,7 @@ msgstr "Statischer DNS"
msgid "Invalid hostname."
msgstr "Ungültiger Hostname."
-#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274
+#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318
#: templates/api_v2/api_documentation.html:51
#: templates/dns/static_host_list.html:69
#: templates/firewall/manage_redirect_rule.html:18
@@ -1273,13 +1302,13 @@ msgstr "Firewall‑Einstellungen verwalten"
msgid "Firewall settings saved successfully"
msgstr "Firewall‑Einstellungen erfolgreich gespeichert"
-#: gatekeeper/forms.py:17 templates/accounts/login.html:23
+#: gatekeeper/forms.py:18 templates/accounts/login.html:23
#: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14
#: vpn_invite/forms.py:282
msgid "Password"
msgstr "Passwort"
-#: gatekeeper/forms.py:20
+#: gatekeeper/forms.py:21
msgid ""
"Minimum 8 characters, with at least one uppercase letter, one lowercase "
"letter, and one number."
@@ -1287,15 +1316,15 @@ msgstr ""
"Mindestens 8 Zeichen, mit mindestens einem Großbuchstaben, einem "
"Kleinbuchstaben und einer Zahl."
-#: gatekeeper/forms.py:23
+#: gatekeeper/forms.py:24
msgid "Confirm Password"
msgstr "Passwort bestätigen"
-#: gatekeeper/forms.py:28 gatekeeper/forms.py:161
+#: gatekeeper/forms.py:29 gatekeeper/forms.py:163
msgid "TOTP Validation PIN"
msgstr "TOTP-Validierungs-PIN"
-#: gatekeeper/forms.py:31 gatekeeper/forms.py:164
+#: gatekeeper/forms.py:32 gatekeeper/forms.py:166
msgid ""
"Enter a 6-digit PIN generated by your authenticator app to validate the "
"secret."
@@ -1303,193 +1332,227 @@ msgstr ""
"Geben Sie eine 6-stellige PIN ein, die von Ihrer Authenticator-App generiert "
"wurde, um das Geheimnis zu validieren."
-#: gatekeeper/forms.py:38 templates/accounts/login.html:14
-#: templates/gatekeeper/gatekeeper_list.html:61
+#: gatekeeper/forms.py:39 templates/accounts/login.html:14
+#: templates/gatekeeper/gatekeeper_list.html:62
#: templates/user_manager/list.html:8 user_manager/forms.py:13
#: vpn_invite/forms.py:281
msgid "Username"
msgstr "Benutzername"
-#: gatekeeper/forms.py:39 gatekeeper/forms.py:344
-#: templates/gatekeeper/gatekeeper_list.html:62
-#: templates/gatekeeper/gatekeeper_list.html:220
+#: gatekeeper/forms.py:40 gatekeeper/forms.py:407
+#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:221
#: templates/wireguard/peer_list/peer_preview_modal.html:103
msgid "Email"
msgstr "E‑Mail"
-#: gatekeeper/forms.py:40
+#: gatekeeper/forms.py:41
msgid "TOTP Secret"
msgstr "TOTP-Geheimnis"
-#: gatekeeper/forms.py:87
+#: gatekeeper/forms.py:88
msgid "Password is required."
msgstr "Passwort ist erforderlich."
-#: gatekeeper/forms.py:90 user_manager/forms.py:127
+#: gatekeeper/forms.py:91 user_manager/forms.py:127
msgid "Password must be at least 8 characters long."
msgstr "Das Passwort muss mindestens 8 Zeichen lang sein."
-#: gatekeeper/forms.py:92
+#: gatekeeper/forms.py:93
msgid "Password must contain at least one lowercase letter."
msgstr "Das Passwort muss mindestens einen Kleinbuchstaben enthalten."
-#: gatekeeper/forms.py:94
+#: gatekeeper/forms.py:95
msgid "Password must contain at least one uppercase letter."
msgstr "Das Passwort muss mindestens einen Großbuchstaben enthalten."
-#: gatekeeper/forms.py:96
+#: gatekeeper/forms.py:97
msgid "Password must contain at least one number."
msgstr "Das Passwort muss mindestens eine Zahl enthalten."
-#: gatekeeper/forms.py:98
+#: gatekeeper/forms.py:99
msgid "Passwords do not match."
msgstr "Passwörter stimmen nicht überein."
-#: gatekeeper/forms.py:103 gatekeeper/forms.py:249
+#: gatekeeper/forms.py:104 gatekeeper/forms.py:276
msgid "Please provide a PIN to validate the TOTP secret."
msgstr "Bitte geben Sie eine PIN an, um das TOTP-Geheimnis zu validieren."
-#: gatekeeper/forms.py:108 gatekeeper/forms.py:254
+#: gatekeeper/forms.py:109 gatekeeper/forms.py:281
msgid "Invalid TOTP PIN."
msgstr "Ungültige TOTP-PIN."
-#: gatekeeper/forms.py:110 gatekeeper/forms.py:256
+#: gatekeeper/forms.py:111 gatekeeper/forms.py:283
msgid "Invalid TOTP secret format. Must be a valid Base32 string."
msgstr ""
"Ungültiges TOTP-Geheimnisformat. Muss eine gültige Base32-Zeichenfolge sein."
-#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120
+#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
msgid "Group Name"
msgstr "Gruppenname"
-#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
+#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122
msgid "Members"
msgstr "Mitglieder"
+#: gatekeeper/forms.py:169
+#, fuzzy
+#| msgid "Expiration"
+msgid "Session Expiration"
+msgstr "Ablauf"
+
#: gatekeeper/forms.py:175
+msgid "Unit"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Hour(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Day(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:189
msgid "Authentication Type"
msgstr "Authentifizierungstyp"
-#: gatekeeper/forms.py:176
+#: gatekeeper/forms.py:190
msgid "Global TOTP Secret"
msgstr "Globales TOTP-Geheimnis"
-#: gatekeeper/forms.py:177
+#: gatekeeper/forms.py:191
msgid "OIDC Provider URL"
msgstr "OIDC-Anbieter-URL"
-#: gatekeeper/forms.py:178
+#: gatekeeper/forms.py:192
msgid "OIDC Client ID"
msgstr "OIDC-Client-ID"
-#: gatekeeper/forms.py:179
+#: gatekeeper/forms.py:193
msgid "OIDC Client Secret"
msgstr "OIDC-Client-Geheimnis"
-#: gatekeeper/forms.py:230
+#: gatekeeper/forms.py:257
msgid "TOTP secret must be empty for Local Password authentication."
msgstr ""
"Das TOTP-Geheimnis muss für die Authentifizierung mit lokalem Passwort leer "
"sein."
-#: gatekeeper/forms.py:232
+#: gatekeeper/forms.py:259
msgid "TOTP validation PIN must be empty for Local Password authentication."
msgstr ""
"Die TOTP-Validierungs-PIN muss für die Authentifizierung mit lokalem "
"Passwort leer sein."
-#: gatekeeper/forms.py:234
+#: gatekeeper/forms.py:261
msgid "OIDC fields must be empty for Local Password authentication."
msgstr ""
"OIDC-Felder müssen für die Authentifizierung mit lokalem Passwort leer sein."
-#: gatekeeper/forms.py:240
+#: gatekeeper/forms.py:267
msgid "Only one Local Password authentication method can be configured."
msgstr ""
"Es kann nur eine Authentifizierungsmethode mit lokalem Passwort konfiguriert "
"werden."
-#: gatekeeper/forms.py:243
+#: gatekeeper/forms.py:270
msgid "OIDC fields must be empty for TOTP authentication."
msgstr "OIDC-Felder müssen für die TOTP-Authentifizierung leer sein."
-#: gatekeeper/forms.py:245
+#: gatekeeper/forms.py:272
msgid "TOTP secret is required for TOTP authentication."
msgstr "Das TOTP-Geheimnis ist für die TOTP-Authentifizierung erforderlich."
-#: gatekeeper/forms.py:259
+#: gatekeeper/forms.py:285
+msgid ""
+"OIDC authentication is temporarily unavailable and will be available soon."
+msgstr ""
+
+#: gatekeeper/forms.py:287
msgid "TOTP secret must be empty for OIDC authentication."
msgstr "Das TOTP-Geheimnis muss für die OIDC-Authentifizierung leer sein."
-#: gatekeeper/forms.py:261
+#: gatekeeper/forms.py:289
msgid "TOTP validation PIN must be empty for OIDC authentication."
msgstr ""
"Die TOTP-Validierungs-PIN muss für die OIDC-Authentifizierung leer sein."
-#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343
+#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406
msgid "Authentication Method"
msgstr "Authentifizierungsmethode"
-#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273
+#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274
msgid "Prefix Length"
msgstr "Präfixlänge"
-#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47
+#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47
#: templates/firewall/manage_firewall_rule.html:360
-#: templates/gatekeeper/gatekeeper_list.html:274
+#: templates/gatekeeper/gatekeeper_list.html:275
msgid "Action"
msgstr "Aktion"
-#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237
+#: gatekeeper/forms.py:332
+#, python-format
+msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d."
+msgstr ""
+
+#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238
msgid "Domain"
msgstr "Domäne"
-#: gatekeeper/models.py:10
+#: gatekeeper/models.py:27
msgid "Local Password"
msgstr "Lokales Passwort"
-#: gatekeeper/models.py:11
+#: gatekeeper/models.py:28
msgid "One-Time Password (TOTP)"
msgstr "Einmalpasswort (TOTP)"
-#: gatekeeper/models.py:12
+#: gatekeeper/models.py:29
msgid "OpenID Connect (OIDC)"
msgstr "OpenID Connect (OIDC)"
-#: gatekeeper/models.py:13
+#: gatekeeper/models.py:30
msgid "IP Address List"
msgstr "IP-Adressliste"
-#: gatekeeper/models.py:17
+#: gatekeeper/models.py:34
msgid "Shared/global TOTP secret key"
msgstr "Gemeinsamer/globaler TOTP-Geheimschlüssel"
-#: gatekeeper/models.py:68
+#: gatekeeper/models.py:39
+#, fuzzy
+#| msgid "Expiration (minutes)"
+msgid "Session expiration time in minutes"
+msgstr "Ablauf (Minuten)"
+
+#: gatekeeper/models.py:96
msgid "Password for local authentication (leave blank if not using)"
msgstr ""
"Passwort für die lokale Authentifizierung (leer lassen, wenn nicht verwendet)"
-#: gatekeeper/models.py:69
+#: gatekeeper/models.py:97
msgid "Per-user TOTP secret key"
msgstr "Benutzerspezifischer TOTP-Geheimschlüssel"
-#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286
+#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287
msgid "Allow"
msgstr "Zulassen"
-#: gatekeeper/views.py:54
+#: gatekeeper/views.py:58
msgid "Edit Gatekeeper User"
msgstr "Gatekeeper-Benutzer bearbeiten"
-#: gatekeeper/views.py:57
+#: gatekeeper/views.py:61
msgid "Create Gatekeeper User"
msgstr "Gatekeeper-Benutzer erstellen"
-#: gatekeeper/views.py:64
+#: gatekeeper/views.py:68
msgid "Gatekeeper User saved successfully."
msgstr "Gatekeeper-Benutzer erfolgreich gespeichert."
-#: gatekeeper/views.py:69
+#: gatekeeper/views.py:73
msgid ""
"\n"
" Gatekeeper User
\n"
@@ -1513,76 +1576,101 @@ msgid ""
msgstr ""
"\n"
" Gatekeeper-Benutzer
\n"
-" Gatekeeper-Benutzer werden zur Authentifizierung gegenüber geschützten "
-"Anwendungen verwendet, die von diesem Gateway verwaltet werden.
\n"
+" Gatekeeper-Benutzer werden zur Authentifizierung gegenüber "
+"geschützten Anwendungen verwendet, die von diesem Gateway verwaltet werden."
+"p>\n"
"\n"
"
Passwort
\n"
-" Erforderlich beim Erstellen eines Benutzers. Lassen Sie beim Bearbeiten beide Passwortfelder "
-"leer, um das aktuelle Passwort beizubehalten.\n"
-" Passwörter werden mit Argon2id-Hashing gespeichert.
\n"
+" Erforderlich beim Erstellen eines Benutzers. Lassen Sie beim "
+"Bearbeiten beide Passwortfelder leer, um das aktuelle Passwort "
+"beizubehalten.\n"
+" Passwörter werden mit Argon2id-Hashing gespeichert."
+"
\n"
"\n"
" TOTP-Geheimnis
\n"
-" Optionales benutzerspezifisches TOTP-Geheimnis. Wenn festgelegt, authentifiziert sich dieser Benutzer "
-"mit seinem eigenen Geheimnis anstelle des\n"
-" globalen TOTP-Geheimnisses, das in der Authentifizierungsmethode konfiguriert ist. Verwenden Sie die "
-"Schaltflächen unter dem Feld, um ein\n"
-" zufälliges Geheimnis zu generieren und den QR-Code mit Ihrer Authentifizierungs-App zu scannen. "
-"Validieren Sie das Geheimnis durch Eingabe der aktuellen\n"
+"
Optionales benutzerspezifisches TOTP-Geheimnis. Wenn festgelegt, "
+"authentifiziert sich dieser Benutzer mit seinem eigenen Geheimnis anstelle "
+"des\n"
+" globalen TOTP-Geheimnisses, das in der Authentifizierungsmethode "
+"konfiguriert ist. Verwenden Sie die Schaltflächen unter dem Feld, um ein\n"
+" zufälliges Geheimnis zu generieren und den QR-Code mit Ihrer "
+"Authentifizierungs-App zu scannen. Validieren Sie das Geheimnis durch "
+"Eingabe der aktuellen\n"
" 6-stelligen PIN vor dem Speichern.
\n"
" "
-#: gatekeeper/views.py:106
+#: gatekeeper/views.py:110
msgid "Gatekeeper User deleted successfully."
msgstr "Gatekeeper-Benutzer erfolgreich gelöscht."
-#: gatekeeper/views.py:111
+#: gatekeeper/views.py:115
msgid "Delete Gatekeeper User"
msgstr "Gatekeeper-Benutzer löschen"
-#: gatekeeper/views.py:113
+#: gatekeeper/views.py:117
#, python-format
msgid "Are you sure you want to delete the user \"%(username)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie den Benutzer \"%(username)s\" löschen möchten?"
-#: gatekeeper/views.py:127
+#: gatekeeper/views.py:131
msgid "Edit Gatekeeper Group"
msgstr "Gatekeeper-Gruppe bearbeiten"
-#: gatekeeper/views.py:130
+#: gatekeeper/views.py:134
msgid "Create Gatekeeper Group"
msgstr "Gatekeeper-Gruppe erstellen"
-#: gatekeeper/views.py:137
+#: gatekeeper/views.py:141
msgid "Gatekeeper Group saved successfully."
msgstr "Gatekeeper-Gruppe erfolgreich gespeichert."
-#: gatekeeper/views.py:159
+#: gatekeeper/views.py:163
msgid "Gatekeeper Group deleted successfully."
msgstr "Gatekeeper-Gruppe erfolgreich gelöscht."
-#: gatekeeper/views.py:164
+#: gatekeeper/views.py:168
msgid "Delete Gatekeeper Group"
msgstr "Gatekeeper-Gruppe löschen"
-#: gatekeeper/views.py:166
+#: gatekeeper/views.py:170
#, python-format
msgid "Are you sure you want to delete the group \"%(name)s\"?"
msgstr "Sind Sie sicher, dass Sie die Gruppe \"%(name)s\" löschen möchten?"
-#: gatekeeper/views.py:180
+#: gatekeeper/views.py:184
msgid "Edit Authentication Method"
msgstr "Authentifizierungsmethode bearbeiten"
-#: gatekeeper/views.py:183
+#: gatekeeper/views.py:187
msgid "Create Authentication Method"
msgstr "Authentifizierungsmethode erstellen"
-#: gatekeeper/views.py:190
+#: gatekeeper/views.py:194
msgid "Authentication Method saved successfully."
msgstr "Authentifizierungsmethode erfolgreich gespeichert."
-#: gatekeeper/views.py:195
+#: gatekeeper/views.py:199
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " Authentication Types
\n"
+#| " Select how users will authenticate through this method.
\n"
+#| " \n"
+#| " Local Password
\n"
+#| " Users will authenticate using a standard username and password "
+#| "stored locally. Only one of this type can be created.
\n"
+#| " \n"
+#| " OIDC (OpenID Connect)
\n"
+#| " Users will authenticate via an external identity provider "
+#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, "
+#| "and Client Secret.
\n"
+#| " \n"
+#| " TOTP (Time-Based One-Time Password)
\n"
+#| " Users will need to enter a rotating token from an "
+#| "authenticator app. If a user does not have a personal TOTP configured, "
+#| "the Global TOTP Secret will be used instead.
\n"
+#| " "
msgid ""
"\n"
" Authentication Types
\n"
@@ -1594,8 +1682,8 @@ msgid ""
" \n"
" OIDC (OpenID Connect)
\n"
" Users will authenticate via an external identity provider (like "
-"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client "
-"Secret.
\n"
+"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret."
+"p>\n"
" \n"
" TOTP (Time-Based One-Time Password)
\n"
" Users will need to enter a rotating token from an authenticator "
@@ -1605,103 +1693,115 @@ msgid ""
msgstr ""
"\n"
"
Authentifizierungstypen
\n"
-" Wählen Sie aus, wie sich Benutzer über diese Methode authentifizieren sollen.
\n"
+" Wählen Sie aus, wie sich Benutzer über diese Methode "
+"authentifizieren sollen.
\n"
"\n"
" Lokales Passwort
\n"
-" Benutzer authentifizieren sich mit einem standardmäßigen Benutzernamen und Passwort, "
-"das lokal gespeichert ist. Es kann nur eine davon erstellt werden.
\n"
+" Benutzer authentifizieren sich mit einem standardmäßigen "
+"Benutzernamen und Passwort, das lokal gespeichert ist. Es kann nur eine "
+"davon erstellt werden.
\n"
"\n"
" OIDC (OpenID Connect)
\n"
-" Benutzer authentifizieren sich über einen externen Identitätsanbieter "
-"(wie Keycloak, Google oder Authelia). Erfordert Provider-URL, Client-ID und Client-Secret.
\n"
+" Benutzer authentifizieren sich über einen externen "
+"Identitätsanbieter (wie Keycloak, Google oder Authelia). Erfordert Provider-"
+"URL, Client-ID und Client-Secret.
\n"
"\n"
" TOTP (Zeitbasiertes Einmalpasswort)
\n"
-" Benutzer müssen ein rotierendes Token aus einer Authentifizierungs-App eingeben. "
-"Wenn ein Benutzer kein persönliches TOTP konfiguriert hat, wird stattdessen das globale TOTP-Geheimnis verwendet.
\n"
+" Benutzer müssen ein rotierendes Token aus einer "
+"Authentifizierungs-App eingeben. Wenn ein Benutzer kein persönliches TOTP "
+"konfiguriert hat, wird stattdessen das globale TOTP-Geheimnis"
+"strong> verwendet.
\n"
" "
-#: gatekeeper/views.py:230
+#: gatekeeper/views.py:237
+#, python-format
+msgid ""
+"Cannot delete authentication method \"%(method)s\" because it is used by the "
+"following policies: %(policies)s."
+msgstr ""
+
+#: gatekeeper/views.py:243
msgid "Authentication Method deleted successfully."
msgstr "Authentifizierungsmethode erfolgreich gelöscht."
-#: gatekeeper/views.py:235
+#: gatekeeper/views.py:248
msgid "Delete Authentication Method"
msgstr "Authentifizierungsmethode löschen"
-#: gatekeeper/views.py:237
+#: gatekeeper/views.py:250
#, python-format
msgid "Are you sure you want to delete the authentication method \"%(name)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die Authentifizierungsmethode \"%(name)s\" löschen "
"möchten?"
-#: gatekeeper/views.py:287
+#: gatekeeper/views.py:303
msgid "Edit Allowed Domain"
msgstr "Zulässige Domäne bearbeiten"
-#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202
+#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203
msgid "Add Allowed Domain"
msgstr "Zulässige Domäne hinzufügen"
-#: gatekeeper/views.py:297
+#: gatekeeper/views.py:313
msgid "Allowed Domain saved successfully."
msgstr "Zulässige Domäne erfolgreich gespeichert."
-#: gatekeeper/views.py:319
+#: gatekeeper/views.py:335
msgid "Allowed Domain deleted successfully."
msgstr "Zulässige Domäne erfolgreich gelöscht."
-#: gatekeeper/views.py:324
+#: gatekeeper/views.py:340
msgid "Delete Allowed Domain"
msgstr "Zulässige Domäne löschen"
-#: gatekeeper/views.py:326
+#: gatekeeper/views.py:342
#, python-format
msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die zulässige Domäne \"%(domain)s\" löschen "
"möchten?"
-#: gatekeeper/views.py:340
+#: gatekeeper/views.py:356
msgid "Edit Allowed Email"
msgstr "Zulässige E-Mail bearbeiten"
-#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199
+#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200
msgid "Add Allowed Email"
msgstr "Zulässige E-Mail hinzufügen"
-#: gatekeeper/views.py:350
+#: gatekeeper/views.py:366
msgid "Allowed Email saved successfully."
msgstr "Zulässige E-Mail erfolgreich gespeichert."
-#: gatekeeper/views.py:372
+#: gatekeeper/views.py:388
msgid "Allowed Email deleted successfully."
msgstr "Zulässige E-Mail erfolgreich gelöscht."
-#: gatekeeper/views.py:377
+#: gatekeeper/views.py:393
msgid "Delete Allowed Email"
msgstr "Zulässige E-Mail löschen"
-#: gatekeeper/views.py:379
+#: gatekeeper/views.py:395
#, python-format
msgid "Are you sure you want to delete the allowed email \"%(email)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die zulässige E-Mail \"%(email)s\" löschen möchten?"
-#: gatekeeper/views.py:393
+#: gatekeeper/views.py:409
msgid "Edit IP Address"
msgstr "IP-Adresse bearbeiten"
-#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263
+#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264
#: templates/wireguard/wireguard_manage_peer.html:171
msgid "Add IP Address"
msgstr "IP‑Adresse hinzufügen"
-#: gatekeeper/views.py:403
+#: gatekeeper/views.py:419
msgid "IP Address saved successfully."
msgstr "IP-Adresse erfolgreich gespeichert."
-#: gatekeeper/views.py:408
+#: gatekeeper/views.py:424
msgid ""
"\n"
" IP Address List
\n"
@@ -1748,25 +1848,26 @@ msgstr ""
"„Büronetzwerk“, „Blockierter Angreifer“).\n"
" "
-#: gatekeeper/views.py:444
+#: gatekeeper/views.py:460
msgid "IP Address deleted successfully."
msgstr "IP-Adresse erfolgreich gelöscht."
-#: gatekeeper/views.py:449
+#: gatekeeper/views.py:465
msgid "Delete IP Address"
msgstr "IP-Adresse löschen"
-#: gatekeeper/views.py:451
+#: gatekeeper/views.py:467
#, python-format
msgid "Are you sure you want to delete the IP address \"%(address)s\"?"
msgstr ""
"Sind Sie sicher, dass Sie die IP-Adresse \"%(address)s\" löschen möchten?"
-#: intl_tools/forms.py:11 templates/accounts/login.html:36
+#: intl_tools/forms.py:11
msgid "Language"
msgstr "Sprache"
-#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14
+#: intl_tools/forms.py:24 templates/accounts/login.html:35
+#: templates/template_parts/base_navbar.html:19
msgid "Change Language"
msgstr "Sprache ändern"
@@ -2102,6 +2203,11 @@ msgstr ""
msgid "Login"
msgstr "Anmelden"
+#: templates/accounts/login.html:40
+#: templates/template_parts/base_navbar.html:14
+msgid "Toggle Dark Mode"
+msgstr ""
+
#: templates/accounts/logout.html:11
msgid "You have been successfully logged out."
msgstr "Sie wurden erfolgreich abgemeldet."
@@ -2124,8 +2230,8 @@ msgid "In"
msgstr "Eingehend"
#: templates/api_v2/api_documentation.html:49
-#: templates/gatekeeper/gatekeeper_list.html:166
-#: templates/gatekeeper/gatekeeper_list.html:211
+#: templates/gatekeeper/gatekeeper_list.html:167
+#: templates/gatekeeper/gatekeeper_list.html:212
#: templates/wireguard/apply_route_template.html:27
msgid "Type"
msgstr "Typ"
@@ -2135,13 +2241,13 @@ msgid "Required"
msgstr "Erforderlich"
#: templates/api_v2/api_documentation.html:62
-#: templates/gatekeeper/gatekeeper_list.html:75
+#: templates/gatekeeper/gatekeeper_list.html:76
#: templates/scheduler/scheduleprofile_form.html:175
msgid "Yes"
msgstr "Ja"
#: templates/api_v2/api_documentation.html:64
-#: templates/gatekeeper/gatekeeper_list.html:77
+#: templates/gatekeeper/gatekeeper_list.html:78
#: templates/scheduler/scheduleprofile_form.html:177
msgid "No"
msgstr "Nein"
@@ -2180,17 +2286,17 @@ msgid "Disabled"
msgstr "Deaktiviert"
#: templates/api_v2/list.html:68
-#: templates/app_gateway/app_gateway_list.html:154
-#: templates/app_gateway/application_details.html:71
-#: templates/app_gateway/application_details.html:121
+#: templates/app_gateway/app_gateway_list.html:162
+#: templates/app_gateway/application_details.html:99
+#: templates/app_gateway/application_details.html:150
#: templates/cluster/workers_list.html:77
#: templates/dns/static_host_list.html:74
-#: templates/gatekeeper/gatekeeper_list.html:89
-#: templates/gatekeeper/gatekeeper_list.html:132
-#: templates/gatekeeper/gatekeeper_list.html:177
-#: templates/gatekeeper/gatekeeper_list.html:225
-#: templates/gatekeeper/gatekeeper_list.html:242
-#: templates/gatekeeper/gatekeeper_list.html:294
+#: templates/gatekeeper/gatekeeper_list.html:90
+#: templates/gatekeeper/gatekeeper_list.html:133
+#: templates/gatekeeper/gatekeeper_list.html:178
+#: templates/gatekeeper/gatekeeper_list.html:226
+#: templates/gatekeeper/gatekeeper_list.html:243
+#: templates/gatekeeper/gatekeeper_list.html:295
#: templates/routing_templates/list.html:29
#: templates/scheduler/scheduleprofile_form.html:123
#: templates/scheduler/scheduleprofile_list.html:25
@@ -2223,78 +2329,83 @@ msgstr "Authentifizierung mit bestimmten Methoden oder Gruppen anfordern."
msgid "Deny all access."
msgstr "Gesamten Zugriff verweigern."
-#: templates/app_gateway/app_gateway_list.html:12
-#: templates/app_gateway/app_gateway_list.html:30
+#: templates/app_gateway/app_gateway_list.html:13
+#: templates/app_gateway/app_gateway_list.html:31
msgid "Applications"
msgstr "Anwendungen"
-#: templates/app_gateway/app_gateway_list.html:18
+#: templates/app_gateway/app_gateway_list.html:19
msgid "Access Policies"
msgstr "Zugriffsrichtlinien"
-#: templates/app_gateway/app_gateway_list.html:34
-#: templates/app_gateway/app_gateway_list.html:60
+#: templates/app_gateway/app_gateway_list.html:35
+#: templates/app_gateway/app_gateway_list.html:68
#: templates/dns/static_host_list.html:70
msgid "Hosts"
msgstr "Hosts"
-#: templates/app_gateway/app_gateway_list.html:42
+#: templates/app_gateway/app_gateway_list.html:44
+#: templates/app_gateway/app_gateway_list.html:50
msgid "Export Configuration"
msgstr "Konfiguration exportieren"
-#: templates/app_gateway/app_gateway_list.html:46
+#: templates/app_gateway/app_gateway_list.html:49
+msgid "Export is not available because Caddy is not enabled."
+msgstr ""
+
+#: templates/app_gateway/app_gateway_list.html:54
msgid "Add Application"
msgstr "Anwendung hinzufügen"
-#: templates/app_gateway/app_gateway_list.html:61
+#: templates/app_gateway/app_gateway_list.html:69
msgid "Routes"
msgstr "Routen"
-#: templates/app_gateway/app_gateway_list.html:80
-#: templates/app_gateway/application_details.html:39
+#: templates/app_gateway/app_gateway_list.html:88
+#: templates/app_gateway/application_details.html:47
msgid "Default (Deny)"
msgstr "Standard (Verweigern)"
-#: templates/app_gateway/app_gateway_list.html:90
+#: templates/app_gateway/app_gateway_list.html:98
msgid "No Applications found."
msgstr "Keine Anwendungen gefunden."
-#: templates/app_gateway/app_gateway_list.html:102
+#: templates/app_gateway/app_gateway_list.html:110
msgid "Application"
msgstr "Anwendung"
-#: templates/app_gateway/app_gateway_list.html:121
+#: templates/app_gateway/app_gateway_list.html:129
msgid "No Hosts found."
msgstr "Keine Hosts gefunden."
-#: templates/app_gateway/app_gateway_list.html:129
+#: templates/app_gateway/app_gateway_list.html:137
msgid "Add Access Policy"
msgstr "Zugriffsrichtlinie hinzufügen"
-#: templates/app_gateway/app_gateway_list.html:140
-#: templates/gatekeeper/gatekeeper_list.html:43
-#: templates/gatekeeper/gatekeeper_list.html:64
+#: templates/app_gateway/app_gateway_list.html:148
+#: templates/gatekeeper/gatekeeper_list.html:44
+#: templates/gatekeeper/gatekeeper_list.html:65
msgid "Groups"
msgstr "Gruppen"
-#: templates/app_gateway/app_gateway_list.html:141
+#: templates/app_gateway/app_gateway_list.html:149
msgid "Auth Methods"
msgstr "Authentifizierungsmethoden"
-#: templates/app_gateway/app_gateway_list.html:142
-#: templates/app_gateway/application_details.html:62
-#: templates/app_gateway/application_details.html:109
-#: templates/gatekeeper/gatekeeper_list.html:65
-#: templates/gatekeeper/gatekeeper_list.html:122
-#: templates/gatekeeper/gatekeeper_list.html:167
-#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/app_gateway/app_gateway_list.html:150
+#: templates/app_gateway/application_details.html:76
+#: templates/app_gateway/application_details.html:138
+#: templates/gatekeeper/gatekeeper_list.html:66
+#: templates/gatekeeper/gatekeeper_list.html:123
+#: templates/gatekeeper/gatekeeper_list.html:168
+#: templates/gatekeeper/gatekeeper_list.html:215
#: templates/scheduler/scheduleprofile_form.html:111
#: templates/scheduler/scheduleprofile_list.html:15
#: templates/wireguard/apply_route_template.html:28
msgid "Actions"
msgstr "Aktionen"
-#: templates/app_gateway/app_gateway_list.html:169
+#: templates/app_gateway/app_gateway_list.html:177
msgid "No Access Policies found."
msgstr "Keine Zugriffsrichtlinien gefunden."
@@ -2303,34 +2414,79 @@ msgstr "Keine Zugriffsrichtlinien gefunden."
msgid "Back to List"
msgstr "Zurück zur Liste"
-#: templates/app_gateway/application_details.html:41
+#: templates/app_gateway/application_details.html:15
+#: templates/app_gateway/application_details.html:59
+#: templates/app_gateway/application_details.html:91
+#: templates/app_gateway/application_details.html:94
+msgid "This application cannot be modified"
+msgstr ""
+
+#: templates/app_gateway/application_details.html:18
+#, fuzzy
+#| msgid "Application Route deleted successfully."
+msgid "This application cannot be deleted"
+msgstr "Anwendungsroute erfolgreich gelöscht."
+
+#: templates/app_gateway/application_details.html:49
msgid "Set Policy"
msgstr "Richtlinie festlegen"
-#: templates/app_gateway/application_details.html:48
+#: templates/app_gateway/application_details.html:56
msgid "Application Hosts"
msgstr "Anwendungshosts"
-#: templates/app_gateway/application_details.html:52
+#: templates/app_gateway/application_details.html:60
+#: templates/app_gateway/application_details.html:65
msgid "Add Host"
msgstr "Host hinzufügen"
-#: templates/app_gateway/application_details.html:86
+#: templates/app_gateway/application_details.html:115
msgid "No Hosts configured for this application."
msgstr "Keine Hosts für diese Anwendung konfiguriert."
-#: templates/app_gateway/application_details.html:92
+#: templates/app_gateway/application_details.html:121
msgid "Application Routes"
msgstr "Anwendungsrouten"
-#: templates/app_gateway/application_details.html:96
+#: templates/app_gateway/application_details.html:125
msgid "Add Route"
msgstr "Route hinzufügen"
-#: templates/app_gateway/application_details.html:136
+#: templates/app_gateway/application_details.html:165
msgid "No Routes configured for this application."
msgstr "Keine Routen für diese Anwendung konfiguriert."
+#: templates/app_gateway/caddy_disabled_alert.html:5
+#, fuzzy
+#| msgid "Cluster is not enabled"
+msgid "Caddy is not enabled"
+msgstr "Cluster ist nicht aktiviert"
+
+#: templates/app_gateway/caddy_disabled_alert.html:6
+msgid ""
+"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway "
+"container to be running. Please start the application using docker-"
+"compose-caddy.yml."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:7
+msgid ""
+"Depending on your custom firewall or proxy rules, the way you access "
+"wireguard_webadmin may change slightly after enabling Caddy."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:8
+msgid ""
+"Switching to Caddy is simple, but it may require a bit of time and attention "
+"to review your current setup."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:9
+#, fuzzy
+#| msgid "For more information, please visit:"
+msgid "For more information, see the discussion:"
+msgstr "Für weitere Informationen besuchen Sie bitte:"
+
#: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72
#: templates/scheduler/scheduleprofile_form.html:82
#: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78
@@ -2841,86 +2997,93 @@ msgstr ""
msgid "Create Port forwarding Rule"
msgstr "Port‑Weiterleitungsregel erstellen"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:63
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:67
#: templates/gatekeeper/gatekeeper_user_form.html:43
msgid "View QR Code"
msgstr "QR-Code anzeigen"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:64
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:68
#: templates/gatekeeper/gatekeeper_user_form.html:44
msgid "Generate TOTP Secret"
msgstr "TOTP-Geheimnis generieren"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:93
-#: templates/gatekeeper/gatekeeper_user_form.html:73
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:105
+#: templates/gatekeeper/gatekeeper_user_form.html:81
msgid "Please enter a TOTP Secret first to generate the QR code."
msgstr ""
"Bitte geben Sie zuerst ein TOTP-Geheimnis ein, um den QR-Code zu generieren."
-#: templates/gatekeeper/gatekeeper_list.html:18
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:127
+#: templates/gatekeeper/gatekeeper_user_form.html:103
+#, fuzzy
+#| msgid "Error creating invite."
+msgid "Error generating QR code."
+msgstr "Fehler beim Erstellen der Einladung."
+
+#: templates/gatekeeper/gatekeeper_list.html:19
msgid "Gatekeeper Users"
msgstr "Gatekeeper-Benutzer"
-#: templates/gatekeeper/gatekeeper_list.html:24
+#: templates/gatekeeper/gatekeeper_list.html:25
msgid "Allowed Emails & Domains"
msgstr "Zulässige E-Mails und Domänen"
-#: templates/gatekeeper/gatekeeper_list.html:30
+#: templates/gatekeeper/gatekeeper_list.html:31
msgid "IP Addresses"
msgstr "IP-Adressen"
-#: templates/gatekeeper/gatekeeper_list.html:40
+#: templates/gatekeeper/gatekeeper_list.html:41
#: templates/user_manager/peer_group_list.html:11
msgid "Users"
msgstr "Benutzer"
-#: templates/gatekeeper/gatekeeper_list.html:51
+#: templates/gatekeeper/gatekeeper_list.html:52
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
msgid "Add User"
msgstr "Benutzer hinzufügen"
-#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:64
msgid "TOTP"
msgstr "TOTP"
-#: templates/gatekeeper/gatekeeper_list.html:104
+#: templates/gatekeeper/gatekeeper_list.html:105
msgid "No Gatekeeper Users found."
msgstr "Keine Gatekeeper-Benutzer gefunden."
-#: templates/gatekeeper/gatekeeper_list.html:111
+#: templates/gatekeeper/gatekeeper_list.html:112
msgid "Add Group"
msgstr "Gruppe hinzufügen"
-#: templates/gatekeeper/gatekeeper_list.html:147
+#: templates/gatekeeper/gatekeeper_list.html:148
msgid "No Gatekeeper Groups found."
msgstr "Keine Gatekeeper-Gruppen gefunden."
-#: templates/gatekeeper/gatekeeper_list.html:156
+#: templates/gatekeeper/gatekeeper_list.html:157
msgid "Add Auth Method"
msgstr "Authentifizierungsmethode hinzufügen"
-#: templates/gatekeeper/gatekeeper_list.html:192
+#: templates/gatekeeper/gatekeeper_list.html:193
msgid "No Authentication Methods found."
msgstr "Keine Authentifizierungsmethoden gefunden."
-#: templates/gatekeeper/gatekeeper_list.html:212
+#: templates/gatekeeper/gatekeeper_list.html:213
msgid "Identity"
msgstr "Identität"
-#: templates/gatekeeper/gatekeeper_list.html:213
-#: templates/gatekeeper/gatekeeper_list.html:275
+#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/gatekeeper/gatekeeper_list.html:276
msgid "Auth Method"
msgstr "Authentifizierungsmethode"
-#: templates/gatekeeper/gatekeeper_list.html:257
+#: templates/gatekeeper/gatekeeper_list.html:258
msgid "No Allowed Emails or Domains found."
msgstr "Keine zulässigen E-Mails oder Domänen gefunden."
-#: templates/gatekeeper/gatekeeper_list.html:276
+#: templates/gatekeeper/gatekeeper_list.html:277
msgid "Manage"
msgstr "Verwalten"
-#: templates/gatekeeper/gatekeeper_list.html:309
+#: templates/gatekeeper/gatekeeper_list.html:310
msgid "No IP Addresses found."
msgstr "Keine IP-Adressen gefunden."
@@ -3543,6 +3706,10 @@ msgstr "Peer löschen"
msgid "Please type \\\"delete\\\" to remove peer configuration."
msgstr "Geben Sie \\\"delete\\\" ein, um die Peer‑Konfiguration zu entfernen."
+#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
+msgid "Display Name"
+msgstr "Anzeigename"
+
#: templates/wireguard/wireguard_manage_server.html:27
msgid ""
"\n"
@@ -4542,5 +4709,25 @@ msgstr ""
"Keine Schnittstellen gefunden|Es wurden keine WireGuard‑Schnittstellen "
"gefunden."
+#~ msgid "This is a reserved system name."
+#~ msgstr "Dies ist ein reservierter Systemname."
+
+#~ msgid ""
+#~ "TOTP must be combined with a Local Password or OpenID Connect "
+#~ "authentication method."
+#~ msgstr ""
+#~ "TOTP muss mit einer lokalen Passwort- oder OpenID Connect-"
+#~ "Authentifizierungsmethode kombiniert werden."
+
+#~ msgid "Route identifier, used in export (e.g.: public_area)"
+#~ msgstr "Routen-Identifikator, verwendet im Export (z.B.: public_area)"
+
+#~ msgid ""
+#~ "Caddy is not active. Configuration files were exported for debugging "
+#~ "purposes."
+#~ msgstr ""
+#~ "Caddy ist nicht aktiv. Konfigurationsdateien wurden zu Debugging-Zwecken "
+#~ "exportiert."
+
#~ msgid "Global TOTP Before Authentication"
#~ msgstr "Globales TOTP vor der Authentifizierung"
diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
index 145e5d1..578a10f 100644
Binary files a/locale/es/LC_MESSAGES/django.mo and b/locale/es/LC_MESSAGES/django.mo differ
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index 25b85eb..62324d6 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-15 17:20-0300\n"
+"POT-Creation-Date: 2026-03-18 10:58-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -33,17 +33,17 @@ msgstr "Volver"
#: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129
#: routing_templates/forms.py:37
-#: templates/app_gateway/app_gateway_list.html:158
-#: templates/app_gateway/application_details.html:75
-#: templates/app_gateway/application_details.html:125
+#: templates/app_gateway/app_gateway_list.html:166
+#: templates/app_gateway/application_details.html:103
+#: templates/app_gateway/application_details.html:154
#: templates/firewall/manage_firewall_rule.html:382
#: templates/firewall/manage_redirect_rule.html:86
-#: templates/gatekeeper/gatekeeper_list.html:93
-#: templates/gatekeeper/gatekeeper_list.html:136
-#: templates/gatekeeper/gatekeeper_list.html:181
-#: templates/gatekeeper/gatekeeper_list.html:229
-#: templates/gatekeeper/gatekeeper_list.html:246
-#: templates/gatekeeper/gatekeeper_list.html:298
+#: templates/gatekeeper/gatekeeper_list.html:94
+#: templates/gatekeeper/gatekeeper_list.html:137
+#: templates/gatekeeper/gatekeeper_list.html:182
+#: templates/gatekeeper/gatekeeper_list.html:230
+#: templates/gatekeeper/gatekeeper_list.html:247
+#: templates/gatekeeper/gatekeeper_list.html:299
#: templates/scheduler/scheduleprofile_form.html:127
#: templates/scheduler/scheduleprofile_list.html:29
#: templates/wireguard/peer_list/peer_preview_modal.html:109
@@ -64,12 +64,12 @@ msgstr ""
"¿Está seguro de que desea regenerar el token? El antiguo token dejará de "
"funcionar inmediatamente."
-#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92
-#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237
-#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124
-#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70
-#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299
-#: gatekeeper/forms.py:329 gatekeeper/forms.py:360
+#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99
+#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241
+#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124
+#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71
+#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362
+#: gatekeeper/forms.py:392 gatekeeper/forms.py:423
#: routing_templates/forms.py:71 scheduler/forms.py:102
#: templates/firewall/manage_firewall_rule.html:379
#: templates/firewall/manage_firewall_settings.html:59
@@ -82,14 +82,14 @@ msgstr ""
msgid "Save"
msgstr "Guardar"
-#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106
-#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174
+#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113
+#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188
#: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47
-#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58
-#: templates/app_gateway/app_gateway_list.html:138
-#: templates/app_gateway/application_details.html:26
+#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66
+#: templates/app_gateway/app_gateway_list.html:146
+#: templates/app_gateway/application_details.html:35
#: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68
-#: templates/gatekeeper/gatekeeper_list.html:165
+#: templates/gatekeeper/gatekeeper_list.html:166
#: templates/routing_templates/list.html:8
#: templates/scheduler/scheduleprofile_list.html:13
#: templates/user_manager/peer_group_list.html:8
@@ -127,16 +127,16 @@ msgid "Enabled"
msgstr "Habilitado"
#: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106
-#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68
-#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170
-#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267
-#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354
-#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18
-#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23
-#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121
-#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222
-#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334
-#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436
+#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83
+#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196
+#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297
+#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384
+#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18
+#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25
+#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125
+#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226
+#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350
+#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452
#: templates/access_denied.html:9
msgid "Access Denied"
msgstr "Acceso denegado"
@@ -206,20 +206,19 @@ msgstr "¿Está seguro de que desea eliminar la clave de API \"%(name)s\"?"
msgid "API Documentation"
msgstr "Documentación de la API"
-#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27
-#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
-msgid "Display Name"
-msgstr "Nombre para mostrar"
-
-#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59
-#: templates/app_gateway/application_details.html:28
+#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67
+#: templates/app_gateway/application_details.html:36
msgid "Upstream"
msgstr "Upstream"
-#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137
-#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279
-#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213
-#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361
+#: app_gateway/forms.py:20
+msgid "Allow invalid/self-signed certificate"
+msgstr ""
+
+#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145
+#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284
+#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240
+#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424
#: scheduler/forms.py:103
#: templates/app_gateway/access_policy_type_select.html:50
#: templates/generic_delete_confirmation.html:19
@@ -227,61 +226,67 @@ msgstr "Upstream"
msgid "Cancel"
msgstr "Cancelar"
-#: app_gateway/forms.py:54
-msgid "This is a reserved system name."
-msgstr "Este es un nombre de sistema reservado."
-
-#: app_gateway/forms.py:58
+#: app_gateway/forms.py:55
msgid "This upstream is reserved by the system."
msgstr "Este upstream está reservado por el sistema."
-#: app_gateway/forms.py:61
+#: app_gateway/forms.py:58
msgid "Upstream URL cannot contain spaces."
msgstr "La URL de upstream no puede contener espacios."
-#: app_gateway/forms.py:67
+#: app_gateway/forms.py:64
msgid "Enter a valid upstream URL starting with http:// or https://"
msgstr ""
"Introduzca una URL de upstream válida que empiece por http:// o https://"
-#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65
-#: templates/app_gateway/app_gateway_list.html:101
-#: templates/app_gateway/application_details.html:61
+#: app_gateway/forms.py:66
+msgid ""
+"Upstream must be a bare host address with no path, query or fragment. Use "
+"http://host or http://host:port"
+msgstr ""
+
+#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65
+#: templates/app_gateway/app_gateway_list.html:109
+#: templates/app_gateway/application_details.html:75
#: templates/dns/static_host_list.html:17
#: templates/wireguard/server_detail.html:39
msgid "Hostname"
msgstr "Nombre de host"
-#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139
+#: app_gateway/forms.py:84
+msgid "Hostname contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147
msgid "Policy Type"
msgstr "Tipo de política"
-#: app_gateway/forms.py:108
+#: app_gateway/forms.py:115
msgid "Allowed Groups"
msgstr "Grupos permitidos"
-#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12
+#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13
msgid "Authentication Methods"
msgstr "Métodos de autenticación"
-#: app_gateway/forms.py:188
+#: app_gateway/forms.py:196
msgid "Cannot select more than one Local Password authentication method."
msgstr ""
"No se puede seleccionar más de un método de autenticación de Contraseña "
"Local."
-#: app_gateway/forms.py:192
+#: app_gateway/forms.py:200
msgid ""
"Cannot select more than one OpenID Connect (OIDC) authentication method."
msgstr ""
"No se puede seleccionar más de un método de autenticação OpenID Connect "
"(OIDC)."
-#: app_gateway/forms.py:196
+#: app_gateway/forms.py:204
msgid "Cannot select more than one TOTP authentication method."
msgstr "No se puede seleccionar más de un método de autenticación TOTP."
-#: app_gateway/forms.py:200
+#: app_gateway/forms.py:208
msgid ""
"Cannot select both Local Password and OpenID Connect (OIDC) authentication "
"methods."
@@ -289,15 +294,7 @@ msgstr ""
"No se pueden seleccionar simultáneamente los métodos de autenticación de "
"Contraseña Local y OpenID Connect (OIDC)."
-#: app_gateway/forms.py:204
-msgid ""
-"TOTP must be combined with a Local Password or OpenID Connect authentication "
-"method."
-msgstr ""
-"TOTP debe combinarse con un método de autenticación de Contraseña Local o "
-"OpenID Connect."
-
-#: app_gateway/forms.py:208
+#: app_gateway/forms.py:212
msgid ""
"At least one user group must be selected when using Local Password "
"authentication."
@@ -305,75 +302,102 @@ msgstr ""
"Se debe seleccionar al menos um grupo de usuarios al usar la autenticación "
"de Contraseña Local."
-#: app_gateway/forms.py:212
+#: app_gateway/forms.py:216
msgid "User groups can only be used with Local Password authentication."
msgstr ""
"Los grupos de usuarios solo se pueden usar con la autenticación de "
"Contraseña Local."
-#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62
-#: templates/app_gateway/application_details.html:31
+#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70
+#: templates/app_gateway/application_details.html:39
#: templates/firewall/firewall_nav_tabs.html:15
msgid "Default Policy"
msgstr "Política predeterminada"
-#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105
+#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134
msgid "Route Name"
msgstr "Nombre de la ruta"
-#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106
+#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135
msgid "Path Prefix"
msgstr "Prefijo de ruta"
-#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107
+#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136
msgid "Policy"
msgstr "Política"
-#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108
+#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137
msgid "Order"
msgstr "Orden"
-#: app_gateway/models.py:12
+#: app_gateway/forms.py:299
+#, fuzzy
+#| msgid "Invite URL must start with 'https://'."
+msgid "Path prefix must start with /."
+msgstr "La URL debe empezar con 'https://'."
+
+#: app_gateway/forms.py:301
+#, fuzzy
+#| msgid "Upstream URL cannot contain spaces."
+msgid "Path prefix cannot contain spaces."
+msgstr "La URL de upstream no puede contener espacios."
+
+#: app_gateway/forms.py:303
+msgid "Path prefix contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:308
+#, fuzzy
+#| msgid "This upstream is reserved by the system."
+msgid "This path prefix is reserved by the system."
+msgstr "Este upstream está reservado por el sistema."
+
+#: app_gateway/models.py:14
msgid "Upstream address, e.g.: http://10.188.18.27:3000"
msgstr "Dirección de origen (upstream), ej.: http://10.188.18.27:3000"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:15
+msgid "Allow invalid or self-signed TLS certificates from the upstream"
+msgstr ""
+
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:19
msgid "Public"
msgstr "Público"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:30
msgid "Protected"
msgstr "Protegido"
-#: app_gateway/models.py:45 gatekeeper/models.py:108
+#: app_gateway/models.py:53 gatekeeper/models.py:142
#: templates/app_gateway/access_policy_type_select.html:41
-#: templates/gatekeeper/gatekeeper_list.html:288
+#: templates/gatekeeper/gatekeeper_list.html:289
msgid "Deny"
msgstr "Denegar"
-#: app_gateway/models.py:80
-msgid "Route identifier, used in export (e.g.: public_area)"
-msgstr "Identificador de ruta, usado en la exportación (ej.: public_area)"
-
-#: app_gateway/views.py:60
+#: app_gateway/views.py:75
msgid "Application Details"
msgstr "Detalles de la aplicación"
-#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15
+#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204
+msgid "The WireGuard WebAdmin application cannot be modified."
+msgstr ""
+
+#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16
+#: templates/app_gateway/application_details.html:23
msgid "Edit Application"
msgstr "Editar aplicación"
-#: app_gateway/views.py:77
+#: app_gateway/views.py:95
msgid "Create Application"
msgstr "Crear aplicación"
-#: app_gateway/views.py:84
+#: app_gateway/views.py:102
msgid "Application saved successfully."
msgstr "Aplicación guardada correctamente."
-#: app_gateway/views.py:89
+#: app_gateway/views.py:107
msgid ""
"\n"
" Application
\n"
@@ -407,62 +431,67 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:120
+#: app_gateway/views.py:137
+msgid "The WireGuard WebAdmin application cannot be deleted."
+msgstr ""
+
+#: app_gateway/views.py:142
msgid "Application deleted successfully."
msgstr "Aplicación eliminada correctamente."
-#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18
+#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19
+#: templates/app_gateway/application_details.html:26
msgid "Delete Application"
msgstr "Eliminar aplicación"
-#: app_gateway/views.py:127
+#: app_gateway/views.py:149
#, python-format
msgid "Are you sure you want to delete the application \"%(name)s\"?"
msgstr "¿Está seguro de que desea eliminar la aplicación \"%(name)s\"?"
-#: app_gateway/views.py:143
+#: app_gateway/views.py:165
msgid "Edit Application Host"
msgstr "Editar host de aplicación"
-#: app_gateway/views.py:147
+#: app_gateway/views.py:169
msgid "Add Application Host"
msgstr "Añadir host de aplicación"
-#: app_gateway/views.py:156
+#: app_gateway/views.py:182
msgid "Application Host saved successfully."
msgstr "Host de aplicación guardado correctamente."
-#: app_gateway/views.py:179
+#: app_gateway/views.py:209
msgid "Application Host deleted successfully."
msgstr "Host de aplicación eliminado correctamente."
-#: app_gateway/views.py:184
+#: app_gateway/views.py:214
msgid "Delete Application Host"
msgstr "Eliminar host de aplicación"
-#: app_gateway/views.py:186
+#: app_gateway/views.py:216
#, python-format
msgid "Are you sure you want to delete the host \"%(hostname)s\"?"
msgstr "¿Está seguro de que desea eliminar el host \"%(hostname)s\"?"
-#: app_gateway/views.py:197
+#: app_gateway/views.py:227
#: templates/app_gateway/access_policy_type_select.html:9
msgid "Select Access Policy Type"
msgstr "Seleccionar tipo de política de acceso"
-#: app_gateway/views.py:212
+#: app_gateway/views.py:242
msgid "Edit Access Policy"
msgstr "Editar política de acceso"
-#: app_gateway/views.py:216
+#: app_gateway/views.py:246
msgid "Create Access Policy"
msgstr "Crear política de acceso"
-#: app_gateway/views.py:223
+#: app_gateway/views.py:253
msgid "Access Policy saved successfully."
msgstr "Política de acceso guardada correctamente."
-#: app_gateway/views.py:229
+#: app_gateway/views.py:259
msgid ""
"\n"
" Public Policy
\n"
@@ -476,7 +505,7 @@ msgstr ""
"requerir ninguna autenticación.\n"
" "
-#: app_gateway/views.py:237
+#: app_gateway/views.py:267
msgid ""
"\n"
" Deny Policy
\n"
@@ -489,7 +518,7 @@ msgstr ""
"coincidentes.\n"
" "
-#: app_gateway/views.py:245
+#: app_gateway/views.py:275
msgid ""
"\n"
" Protected Policy
\n"
@@ -519,11 +548,11 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:276
+#: app_gateway/views.py:306
msgid "Access Policy deleted successfully."
msgstr "Política de acceso eliminada correctamente."
-#: app_gateway/views.py:278
+#: app_gateway/views.py:308
msgid ""
"Cannot delete this Access Policy because it is currently in use by an "
"Application Route or Application Default Policy."
@@ -531,55 +560,55 @@ msgstr ""
"No se puede eliminar esta política de acceso porque está actualmente en uso "
"por una ruta de aplicación o una política predeterminada de aplicación."
-#: app_gateway/views.py:283
+#: app_gateway/views.py:313
msgid "Delete Access Policy"
msgstr "Eliminar política de acceso"
-#: app_gateway/views.py:285
+#: app_gateway/views.py:315
#, python-format
msgid "Are you sure you want to delete the access policy \"%(name)s\"?"
msgstr "¿Está seguro de que desea eliminar la política de acceso \"%(name)s\"?"
-#: app_gateway/views.py:301
+#: app_gateway/views.py:331
msgid "Edit Application Default Policy"
msgstr "Editar política predeterminada de la aplicación"
-#: app_gateway/views.py:305
+#: app_gateway/views.py:335
msgid "Set Application Default Policy"
msgstr "Establecer política predeterminada de la aplicación"
-#: app_gateway/views.py:314
+#: app_gateway/views.py:344
msgid "Application Default Policy saved successfully."
msgstr "Política predeterminada de la aplicación guardada correctamente."
-#: app_gateway/views.py:337
+#: app_gateway/views.py:367
msgid "Application Default Policy deleted successfully."
msgstr "Política predeterminada de la aplicación eliminada correctamente."
-#: app_gateway/views.py:342
+#: app_gateway/views.py:372
msgid "Delete Application Default Policy"
msgstr "Eliminar política predeterminada de la aplicación"
-#: app_gateway/views.py:344
+#: app_gateway/views.py:374
#, python-format
msgid "Are you sure you want to remove the default policy for \"%(name)s\"?"
msgstr ""
"¿Está seguro de que desea eliminar la política predeterminada para "
"\"%(name)s\"?"
-#: app_gateway/views.py:362
+#: app_gateway/views.py:392
msgid "Edit Application Route"
msgstr "Editar ruta de la aplicación"
-#: app_gateway/views.py:366
+#: app_gateway/views.py:396
msgid "Add Application Route"
msgstr "Añadir ruta de la aplicación"
-#: app_gateway/views.py:375
+#: app_gateway/views.py:405
msgid "Application Route saved successfully."
msgstr "Ruta de la aplicación guardada correctamente."
-#: app_gateway/views.py:380
+#: app_gateway/views.py:410
msgid ""
"\n"
" Application Route
\n"
@@ -619,42 +648,41 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:413
+#: app_gateway/views.py:443
msgid "Application Route deleted successfully."
msgstr "Ruta de la aplicación eliminada correctamente."
-#: app_gateway/views.py:418
+#: app_gateway/views.py:448
msgid "Delete Application Route"
msgstr "Eliminar ruta de la aplicación"
-#: app_gateway/views.py:420
+#: app_gateway/views.py:450
#, python-format
msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?"
msgstr "¿Está seguro de que desea eliminar la ruta \"%(name)s\" (%(path)s)?"
-#: app_gateway/views.py:443
+#: app_gateway/views.py:468
+msgid ""
+"Configuration export is not available because Caddy is not enabled. To use "
+"App Gateway and Gatekeeper, start the application using docker-compose-"
+"caddy.yml."
+msgstr ""
+
+#: app_gateway/views.py:478
msgid "Configuration exported successfully."
msgstr "Configuración exportada con éxito."
-#: app_gateway/views.py:445
-msgid ""
-"Caddy is not active. Configuration files were exported for debugging "
-"purposes."
-msgstr ""
-"Caddy no está activo. Los archivos de configuração se exportaron con fines "
-"de depuración."
-
#: cluster/forms.py:20
msgid "IP Lock"
msgstr "Bloqueo de IP"
-#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271
+#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315
#: 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/gatekeeper/gatekeeper_list.html:272
+#: templates/gatekeeper/gatekeeper_list.html:273
#: templates/wireguard/wireguard_status.html:45
msgid "IP Address"
msgstr "Dirección IP"
@@ -931,7 +959,7 @@ msgstr "DNS estático"
msgid "Invalid hostname."
msgstr "Nombre de host inválido."
-#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274
+#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318
#: templates/api_v2/api_documentation.html:51
#: templates/dns/static_host_list.html:69
#: templates/firewall/manage_redirect_rule.html:18
@@ -1263,13 +1291,13 @@ msgstr "Gestionar configuración de firewall"
msgid "Firewall settings saved successfully"
msgstr "Configuración de firewall guardada correctamente"
-#: gatekeeper/forms.py:17 templates/accounts/login.html:23
+#: gatekeeper/forms.py:18 templates/accounts/login.html:23
#: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14
#: vpn_invite/forms.py:282
msgid "Password"
msgstr "Contraseña"
-#: gatekeeper/forms.py:20
+#: gatekeeper/forms.py:21
msgid ""
"Minimum 8 characters, with at least one uppercase letter, one lowercase "
"letter, and one number."
@@ -1277,15 +1305,15 @@ msgstr ""
"Mínimo de 8 caracteres, con al menos una letra mayúscula, una letra "
"minúscula y un número."
-#: gatekeeper/forms.py:23
+#: gatekeeper/forms.py:24
msgid "Confirm Password"
msgstr "Confirmar Contraseña"
-#: gatekeeper/forms.py:28 gatekeeper/forms.py:161
+#: gatekeeper/forms.py:29 gatekeeper/forms.py:163
msgid "TOTP Validation PIN"
msgstr "PIN de validación TOTP"
-#: gatekeeper/forms.py:31 gatekeeper/forms.py:164
+#: gatekeeper/forms.py:32 gatekeeper/forms.py:166
msgid ""
"Enter a 6-digit PIN generated by your authenticator app to validate the "
"secret."
@@ -1293,189 +1321,223 @@ msgstr ""
"Introduzca un PIN de 6 dígitos generado por su aplicación de autenticación "
"para validar el secreto."
-#: gatekeeper/forms.py:38 templates/accounts/login.html:14
-#: templates/gatekeeper/gatekeeper_list.html:61
+#: gatekeeper/forms.py:39 templates/accounts/login.html:14
+#: templates/gatekeeper/gatekeeper_list.html:62
#: templates/user_manager/list.html:8 user_manager/forms.py:13
#: vpn_invite/forms.py:281
msgid "Username"
msgstr "Usuario"
-#: gatekeeper/forms.py:39 gatekeeper/forms.py:344
-#: templates/gatekeeper/gatekeeper_list.html:62
-#: templates/gatekeeper/gatekeeper_list.html:220
+#: gatekeeper/forms.py:40 gatekeeper/forms.py:407
+#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:221
#: templates/wireguard/peer_list/peer_preview_modal.html:103
msgid "Email"
msgstr "Email"
-#: gatekeeper/forms.py:40
+#: gatekeeper/forms.py:41
msgid "TOTP Secret"
msgstr "Secreto TOTP"
-#: gatekeeper/forms.py:87
+#: gatekeeper/forms.py:88
msgid "Password is required."
msgstr "La contraseña es obligatoria."
-#: gatekeeper/forms.py:90 user_manager/forms.py:127
+#: gatekeeper/forms.py:91 user_manager/forms.py:127
msgid "Password must be at least 8 characters long."
msgstr "La contraseña debe tener al menos 8 caracteres."
-#: gatekeeper/forms.py:92
+#: gatekeeper/forms.py:93
msgid "Password must contain at least one lowercase letter."
msgstr "La contraseña debe contener al menos una letra minúscula."
-#: gatekeeper/forms.py:94
+#: gatekeeper/forms.py:95
msgid "Password must contain at least one uppercase letter."
msgstr "La contraseña debe contener al menos una letra mayúscula."
-#: gatekeeper/forms.py:96
+#: gatekeeper/forms.py:97
msgid "Password must contain at least one number."
msgstr "La contraseña debe contener al menos un número."
-#: gatekeeper/forms.py:98
+#: gatekeeper/forms.py:99
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
-#: gatekeeper/forms.py:103 gatekeeper/forms.py:249
+#: gatekeeper/forms.py:104 gatekeeper/forms.py:276
msgid "Please provide a PIN to validate the TOTP secret."
msgstr "Proporcione un PIN para validar el secreto TOTP."
-#: gatekeeper/forms.py:108 gatekeeper/forms.py:254
+#: gatekeeper/forms.py:109 gatekeeper/forms.py:281
msgid "Invalid TOTP PIN."
msgstr "PIN TOTP no válido."
-#: gatekeeper/forms.py:110 gatekeeper/forms.py:256
+#: gatekeeper/forms.py:111 gatekeeper/forms.py:283
msgid "Invalid TOTP secret format. Must be a valid Base32 string."
msgstr "Formato de secreto TOTP no válido. Debe ser una cadena Base32 válida."
-#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120
+#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
msgid "Group Name"
msgstr "Nombre del grupo"
-#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
+#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122
msgid "Members"
msgstr "Miembros"
+#: gatekeeper/forms.py:169
+#, fuzzy
+#| msgid "Expiration"
+msgid "Session Expiration"
+msgstr "Caduca en"
+
#: gatekeeper/forms.py:175
+msgid "Unit"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Hour(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Day(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:189
msgid "Authentication Type"
msgstr "Tipo de autenticación"
-#: gatekeeper/forms.py:176
+#: gatekeeper/forms.py:190
msgid "Global TOTP Secret"
msgstr "Secreto TOTP global"
-#: gatekeeper/forms.py:177
+#: gatekeeper/forms.py:191
msgid "OIDC Provider URL"
msgstr "URL del proveedor OIDC"
-#: gatekeeper/forms.py:178
+#: gatekeeper/forms.py:192
msgid "OIDC Client ID"
msgstr "ID de cliente OIDC"
-#: gatekeeper/forms.py:179
+#: gatekeeper/forms.py:193
msgid "OIDC Client Secret"
msgstr "Secreto de cliente OIDC"
-#: gatekeeper/forms.py:230
+#: gatekeeper/forms.py:257
msgid "TOTP secret must be empty for Local Password authentication."
msgstr ""
"El secreto TOTP debe estar vacío para la autenticación por contraseña local."
-#: gatekeeper/forms.py:232
+#: gatekeeper/forms.py:259
msgid "TOTP validation PIN must be empty for Local Password authentication."
msgstr ""
"El PIN de validación TOTP debe estar vacío para la autenticación por "
"contraseña local."
-#: gatekeeper/forms.py:234
+#: gatekeeper/forms.py:261
msgid "OIDC fields must be empty for Local Password authentication."
msgstr ""
"Los campos OIDC deben estar vacíos para la autenticación por contraseña "
"local."
-#: gatekeeper/forms.py:240
+#: gatekeeper/forms.py:267
msgid "Only one Local Password authentication method can be configured."
msgstr ""
"Sólo se puede configurar un método de autenticación por contraseña local."
-#: gatekeeper/forms.py:243
+#: gatekeeper/forms.py:270
msgid "OIDC fields must be empty for TOTP authentication."
msgstr "Los campos OIDC deben estar vacíos para la autenticación TOTP."
-#: gatekeeper/forms.py:245
+#: gatekeeper/forms.py:272
msgid "TOTP secret is required for TOTP authentication."
msgstr "El secreto TOTP es obligatorio para la autenticación TOTP."
-#: gatekeeper/forms.py:259
+#: gatekeeper/forms.py:285
+msgid ""
+"OIDC authentication is temporarily unavailable and will be available soon."
+msgstr ""
+
+#: gatekeeper/forms.py:287
msgid "TOTP secret must be empty for OIDC authentication."
msgstr "El secreto TOTP debe estar vacío para la autenticación OIDC."
-#: gatekeeper/forms.py:261
+#: gatekeeper/forms.py:289
msgid "TOTP validation PIN must be empty for OIDC authentication."
msgstr "El PIN de validación TOTP debe estar vacío para la autenticación OIDC."
-#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343
+#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406
msgid "Authentication Method"
msgstr "Método de autenticación"
-#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273
+#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274
msgid "Prefix Length"
msgstr "Longitud del prefijo"
-#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47
+#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47
#: templates/firewall/manage_firewall_rule.html:360
-#: templates/gatekeeper/gatekeeper_list.html:274
+#: templates/gatekeeper/gatekeeper_list.html:275
msgid "Action"
msgstr "Acción"
-#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237
+#: gatekeeper/forms.py:332
+#, python-format
+msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d."
+msgstr ""
+
+#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238
msgid "Domain"
msgstr "Dominio"
-#: gatekeeper/models.py:10
+#: gatekeeper/models.py:27
msgid "Local Password"
msgstr "Contraseña local"
-#: gatekeeper/models.py:11
+#: gatekeeper/models.py:28
msgid "One-Time Password (TOTP)"
msgstr "Contraseña de un solo uso (TOTP)"
-#: gatekeeper/models.py:12
+#: gatekeeper/models.py:29
msgid "OpenID Connect (OIDC)"
msgstr "OpenID Connect (OIDC)"
-#: gatekeeper/models.py:13
+#: gatekeeper/models.py:30
msgid "IP Address List"
msgstr "Lista de direcciones IP"
-#: gatekeeper/models.py:17
+#: gatekeeper/models.py:34
msgid "Shared/global TOTP secret key"
msgstr "Clave secreta TOTP compartida/global"
-#: gatekeeper/models.py:68
+#: gatekeeper/models.py:39
+#, fuzzy
+#| msgid "Expiration (minutes)"
+msgid "Session expiration time in minutes"
+msgstr "Expira en (minutos)"
+
+#: gatekeeper/models.py:96
msgid "Password for local authentication (leave blank if not using)"
msgstr "Contraseña para autenticación local (dejar en blanco si no se usa)"
-#: gatekeeper/models.py:69
+#: gatekeeper/models.py:97
msgid "Per-user TOTP secret key"
msgstr "Clave secreta TOTP por usuario"
-#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286
+#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287
msgid "Allow"
msgstr "Permitir"
-#: gatekeeper/views.py:54
+#: gatekeeper/views.py:58
msgid "Edit Gatekeeper User"
msgstr "Editar usuario de Gatekeeper"
-#: gatekeeper/views.py:57
+#: gatekeeper/views.py:61
msgid "Create Gatekeeper User"
msgstr "Crear usuario de Gatekeeper"
-#: gatekeeper/views.py:64
+#: gatekeeper/views.py:68
msgid "Gatekeeper User saved successfully."
msgstr "Usuario de Gatekeeper guardado correctamente."
-#: gatekeeper/views.py:69
+#: gatekeeper/views.py:73
msgid ""
"\n"
" Gatekeeper User
\n"
@@ -1499,75 +1561,96 @@ msgid ""
msgstr ""
"\n"
" Usuario de Gatekeeper
\n"
-" Los usuarios de Gatekeeper se utilizan para autenticarse en aplicaciones protegidas "
-"gestionadas por este gateway.
\n"
+" Los usuarios de Gatekeeper se utilizan para autenticarse en "
+"aplicaciones protegidas gestionadas por este gateway.
\n"
"\n"
" Contraseña
\n"
-" Obligatorio al crear un usuario. Al editar, deje ambos campos de contraseña "
-"en blanco para mantener la contraseña actual.\n"
-" Las contraseñas se almacenan mediante el hash Argon2id.
\n"
+" Obligatorio al crear un usuario. Al editar, deje ambos campos de "
+"contraseña en blanco para mantener la contraseña actual.\n"
+" Las contraseñas se almacenan mediante el hash Argon2id"
+"strong>.
\n"
"\n"
" Secreto TOTP
\n"
-" Secreto TOTP opcional por usuario. Cuando está configurado, este usuario se "
-"autenticará usando su propio secreto en lugar del\n"
-" secreto TOTP global configurado en el Método de Autenticación. Utilice los "
-"botones debajo del campo para generar un\n"
-" secreto aleatorio y escanee el código QR con su aplicación de autenticación. "
-"Valide el secreto ingresando el PIN actual de\n"
+"
Secreto TOTP opcional por usuario. Cuando está configurado, este "
+"usuario se autenticará usando su propio secreto en lugar del\n"
+" secreto TOTP global configurado en el Método de Autenticación. "
+"Utilice los botones debajo del campo para generar un\n"
+" secreto aleatorio y escanee el código QR con su aplicación de "
+"autenticación. Valide el secreto ingresando el PIN actual de\n"
" 6 dígitos antes de guardar.
\n"
" "
-#: gatekeeper/views.py:106
+#: gatekeeper/views.py:110
msgid "Gatekeeper User deleted successfully."
msgstr "Usuario de Gatekeeper eliminado correctamente."
-#: gatekeeper/views.py:111
+#: gatekeeper/views.py:115
msgid "Delete Gatekeeper User"
msgstr "Eliminar usuario de Gatekeeper"
-#: gatekeeper/views.py:113
+#: gatekeeper/views.py:117
#, python-format
msgid "Are you sure you want to delete the user \"%(username)s\"?"
msgstr "¿Está seguro de que desea eliminar al usuario \"%(username)s\"?"
-#: gatekeeper/views.py:127
+#: gatekeeper/views.py:131
msgid "Edit Gatekeeper Group"
msgstr "Editar grupo de Gatekeeper"
-#: gatekeeper/views.py:130
+#: gatekeeper/views.py:134
msgid "Create Gatekeeper Group"
msgstr "Crear grupo Gatekeeper"
-#: gatekeeper/views.py:137
+#: gatekeeper/views.py:141
msgid "Gatekeeper Group saved successfully."
msgstr "Grupo de Gatekeeper guardado correctamente."
-#: gatekeeper/views.py:159
+#: gatekeeper/views.py:163
msgid "Gatekeeper Group deleted successfully."
msgstr "Grupo de Gatekeeper eliminado correctamente."
-#: gatekeeper/views.py:164
+#: gatekeeper/views.py:168
msgid "Delete Gatekeeper Group"
msgstr "Eliminar grupo Gatekeeper"
-#: gatekeeper/views.py:166
+#: gatekeeper/views.py:170
#, python-format
msgid "Are you sure you want to delete the group \"%(name)s\"?"
msgstr "¿Está seguro de que desea eliminar el grupo \"%(name)s\"?"
-#: gatekeeper/views.py:180
+#: gatekeeper/views.py:184
msgid "Edit Authentication Method"
msgstr "Editar método de autenticación"
-#: gatekeeper/views.py:183
+#: gatekeeper/views.py:187
msgid "Create Authentication Method"
msgstr "Crear método de autenticación"
-#: gatekeeper/views.py:190
+#: gatekeeper/views.py:194
msgid "Authentication Method saved successfully."
msgstr "Método de autenticación guardado correctamente."
-#: gatekeeper/views.py:195
+#: gatekeeper/views.py:199
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " Authentication Types
\n"
+#| " Select how users will authenticate through this method.
\n"
+#| " \n"
+#| " Local Password
\n"
+#| " Users will authenticate using a standard username and password "
+#| "stored locally. Only one of this type can be created.
\n"
+#| " \n"
+#| " OIDC (OpenID Connect)
\n"
+#| " Users will authenticate via an external identity provider "
+#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, "
+#| "and Client Secret.
\n"
+#| " \n"
+#| " TOTP (Time-Based One-Time Password)
\n"
+#| " Users will need to enter a rotating token from an "
+#| "authenticator app. If a user does not have a personal TOTP configured, "
+#| "the Global TOTP Secret will be used instead.
\n"
+#| " "
msgid ""
"\n"
" Authentication Types
\n"
@@ -1579,8 +1662,8 @@ msgid ""
" \n"
" OIDC (OpenID Connect)
\n"
" Users will authenticate via an external identity provider (like "
-"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client "
-"Secret.
\n"
+"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret."
+"p>\n"
" \n"
" TOTP (Time-Based One-Time Password)
\n"
" Users will need to enter a rotating token from an authenticator "
@@ -1590,102 +1673,113 @@ msgid ""
msgstr ""
"\n"
"
Tipos de Autenticación
\n"
-" Seleccione cómo se autenticarán los usuarios a través de este método.
\n"
+" Seleccione cómo se autenticarán los usuarios a través de este "
+"método.
\n"
"\n"
" Contraseña Local
\n"
-" Los usuarios se autenticarán utilizando un nombre de usuario y contraseña "
-"estándar almacenados localmente. Solo se puede crear uno de este tipo.
\n"
+" Los usuarios se autenticarán utilizando un nombre de usuario y "
+"contraseña estándar almacenados localmente. Solo se puede crear uno de este "
+"tipo.
\n"
"\n"
" OIDC (OpenID Connect)
\n"
-" Los usuarios se autenticarán a través de un proveedor de identidad externo "
-"(como Keycloak, Google o Authelia). Requiere URL del Proveedor, ID de Cliente y Secreto de Cliente.
\n"
+" Los usuarios se autenticarán a través de un proveedor de "
+"identidad externo (como Keycloak, Google o Authelia). Requiere URL del "
+"Proveedor, ID de Cliente y Secreto de Cliente.
\n"
"\n"
" TOTP (Contraseña de un Solo Uso Basada en Tiempo)
\n"
-" Los usuarios deberán ingresar un token rotativo de una aplicación de autenticación. "
-"Si un usuario no tiene configurado un TOTP personal, se utilizará el Secreto TOTP Global en su lugar.
\n"
+" Los usuarios deberán ingresar un token rotativo de una aplicación "
+"de autenticación. Si un usuario no tiene configurado un TOTP personal, se "
+"utilizará el Secreto TOTP Global en su lugar.
\n"
" "
-#: gatekeeper/views.py:230
+#: gatekeeper/views.py:237
+#, python-format
+msgid ""
+"Cannot delete authentication method \"%(method)s\" because it is used by the "
+"following policies: %(policies)s."
+msgstr ""
+
+#: gatekeeper/views.py:243
msgid "Authentication Method deleted successfully."
msgstr "Método de autenticación eliminado correctamente."
-#: gatekeeper/views.py:235
+#: gatekeeper/views.py:248
msgid "Delete Authentication Method"
msgstr "Eliminar método de autenticación"
-#: gatekeeper/views.py:237
+#: gatekeeper/views.py:250
#, python-format
msgid "Are you sure you want to delete the authentication method \"%(name)s\"?"
msgstr ""
"¿Está seguro de que desea eliminar el método de autenticación \"%(name)s\"?"
-#: gatekeeper/views.py:287
+#: gatekeeper/views.py:303
msgid "Edit Allowed Domain"
msgstr "Editar dominio permitido"
-#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202
+#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203
msgid "Add Allowed Domain"
msgstr "Añadir dominio permitido"
-#: gatekeeper/views.py:297
+#: gatekeeper/views.py:313
msgid "Allowed Domain saved successfully."
msgstr "Dominio permitido guardado correctamente."
-#: gatekeeper/views.py:319
+#: gatekeeper/views.py:335
msgid "Allowed Domain deleted successfully."
msgstr "Dominio permitido eliminado correctamente."
-#: gatekeeper/views.py:324
+#: gatekeeper/views.py:340
msgid "Delete Allowed Domain"
msgstr "Eliminar dominio permitido"
-#: gatekeeper/views.py:326
+#: gatekeeper/views.py:342
#, python-format
msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?"
msgstr ""
"¿Está seguro de que desea eliminar el dominio permitido \"%(domain)s\"?"
-#: gatekeeper/views.py:340
+#: gatekeeper/views.py:356
msgid "Edit Allowed Email"
msgstr "Editar correo electrónico permitido"
-#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199
+#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200
msgid "Add Allowed Email"
msgstr "Añadir correo electrónico permitido"
-#: gatekeeper/views.py:350
+#: gatekeeper/views.py:366
msgid "Allowed Email saved successfully."
msgstr "Correo electrónico permitido guardado correctamente."
-#: gatekeeper/views.py:372
+#: gatekeeper/views.py:388
msgid "Allowed Email deleted successfully."
msgstr "Correo electrónico permitido eliminado correctamente."
-#: gatekeeper/views.py:377
+#: gatekeeper/views.py:393
msgid "Delete Allowed Email"
msgstr "Eliminar correo electrónico permitido"
-#: gatekeeper/views.py:379
+#: gatekeeper/views.py:395
#, python-format
msgid "Are you sure you want to delete the allowed email \"%(email)s\"?"
msgstr ""
"¿Está seguro de que desea eliminar el correo electrónico permitido "
"\"%(email)s\"?"
-#: gatekeeper/views.py:393
+#: gatekeeper/views.py:409
msgid "Edit IP Address"
msgstr "Editar dirección IP"
-#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263
+#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264
#: templates/wireguard/wireguard_manage_peer.html:171
msgid "Add IP Address"
msgstr "Añadir IP"
-#: gatekeeper/views.py:403
+#: gatekeeper/views.py:419
msgid "IP Address saved successfully."
msgstr "Dirección IP guardada correctamente."
-#: gatekeeper/views.py:408
+#: gatekeeper/views.py:424
msgid ""
"\n"
" IP Address List
\n"
@@ -1732,24 +1826,25 @@ msgstr ""
"\"Red de la Oficina\", \"Atacante Bloqueado\").\n"
" "
-#: gatekeeper/views.py:444
+#: gatekeeper/views.py:460
msgid "IP Address deleted successfully."
msgstr "Dirección IP eliminada correctamente."
-#: gatekeeper/views.py:449
+#: gatekeeper/views.py:465
msgid "Delete IP Address"
msgstr "Eliminar dirección IP"
-#: gatekeeper/views.py:451
+#: gatekeeper/views.py:467
#, python-format
msgid "Are you sure you want to delete the IP address \"%(address)s\"?"
msgstr "¿Está seguro de que desea eliminar la dirección IP \"%(address)s\"?"
-#: intl_tools/forms.py:11 templates/accounts/login.html:36
+#: intl_tools/forms.py:11
msgid "Language"
msgstr "Idioma"
-#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14
+#: intl_tools/forms.py:24 templates/accounts/login.html:35
+#: templates/template_parts/base_navbar.html:19
msgid "Change Language"
msgstr "Cambiar idioma"
@@ -2084,6 +2179,11 @@ msgstr ""
msgid "Login"
msgstr "Iniciar sesión"
+#: templates/accounts/login.html:40
+#: templates/template_parts/base_navbar.html:14
+msgid "Toggle Dark Mode"
+msgstr ""
+
#: templates/accounts/logout.html:11
msgid "You have been successfully logged out."
msgstr "Has cerrado sesión correctamente."
@@ -2106,8 +2206,8 @@ msgid "In"
msgstr "Entrada"
#: templates/api_v2/api_documentation.html:49
-#: templates/gatekeeper/gatekeeper_list.html:166
-#: templates/gatekeeper/gatekeeper_list.html:211
+#: templates/gatekeeper/gatekeeper_list.html:167
+#: templates/gatekeeper/gatekeeper_list.html:212
#: templates/wireguard/apply_route_template.html:27
msgid "Type"
msgstr "Tipo"
@@ -2117,13 +2217,13 @@ msgid "Required"
msgstr "Obligatorio"
#: templates/api_v2/api_documentation.html:62
-#: templates/gatekeeper/gatekeeper_list.html:75
+#: templates/gatekeeper/gatekeeper_list.html:76
#: templates/scheduler/scheduleprofile_form.html:175
msgid "Yes"
msgstr "Sí"
#: templates/api_v2/api_documentation.html:64
-#: templates/gatekeeper/gatekeeper_list.html:77
+#: templates/gatekeeper/gatekeeper_list.html:78
#: templates/scheduler/scheduleprofile_form.html:177
msgid "No"
msgstr "No"
@@ -2163,17 +2263,17 @@ msgid "Disabled"
msgstr "Deshabilitado"
#: templates/api_v2/list.html:68
-#: templates/app_gateway/app_gateway_list.html:154
-#: templates/app_gateway/application_details.html:71
-#: templates/app_gateway/application_details.html:121
+#: templates/app_gateway/app_gateway_list.html:162
+#: templates/app_gateway/application_details.html:99
+#: templates/app_gateway/application_details.html:150
#: templates/cluster/workers_list.html:77
#: templates/dns/static_host_list.html:74
-#: templates/gatekeeper/gatekeeper_list.html:89
-#: templates/gatekeeper/gatekeeper_list.html:132
-#: templates/gatekeeper/gatekeeper_list.html:177
-#: templates/gatekeeper/gatekeeper_list.html:225
-#: templates/gatekeeper/gatekeeper_list.html:242
-#: templates/gatekeeper/gatekeeper_list.html:294
+#: templates/gatekeeper/gatekeeper_list.html:90
+#: templates/gatekeeper/gatekeeper_list.html:133
+#: templates/gatekeeper/gatekeeper_list.html:178
+#: templates/gatekeeper/gatekeeper_list.html:226
+#: templates/gatekeeper/gatekeeper_list.html:243
+#: templates/gatekeeper/gatekeeper_list.html:295
#: templates/routing_templates/list.html:29
#: templates/scheduler/scheduleprofile_form.html:123
#: templates/scheduler/scheduleprofile_list.html:25
@@ -2205,78 +2305,83 @@ msgstr "Requerir autenticación utilizando métodos o grupos especificados."
msgid "Deny all access."
msgstr "Denegar todo el acceso."
-#: templates/app_gateway/app_gateway_list.html:12
-#: templates/app_gateway/app_gateway_list.html:30
+#: templates/app_gateway/app_gateway_list.html:13
+#: templates/app_gateway/app_gateway_list.html:31
msgid "Applications"
msgstr "Aplicaciones"
-#: templates/app_gateway/app_gateway_list.html:18
+#: templates/app_gateway/app_gateway_list.html:19
msgid "Access Policies"
msgstr "Políticas de acceso"
-#: templates/app_gateway/app_gateway_list.html:34
-#: templates/app_gateway/app_gateway_list.html:60
+#: templates/app_gateway/app_gateway_list.html:35
+#: templates/app_gateway/app_gateway_list.html:68
#: templates/dns/static_host_list.html:70
msgid "Hosts"
msgstr "Hosts"
-#: templates/app_gateway/app_gateway_list.html:42
+#: templates/app_gateway/app_gateway_list.html:44
+#: templates/app_gateway/app_gateway_list.html:50
msgid "Export Configuration"
msgstr "Exportar configuración"
-#: templates/app_gateway/app_gateway_list.html:46
+#: templates/app_gateway/app_gateway_list.html:49
+msgid "Export is not available because Caddy is not enabled."
+msgstr ""
+
+#: templates/app_gateway/app_gateway_list.html:54
msgid "Add Application"
msgstr "Añadir aplicación"
-#: templates/app_gateway/app_gateway_list.html:61
+#: templates/app_gateway/app_gateway_list.html:69
msgid "Routes"
msgstr "Rutas"
-#: templates/app_gateway/app_gateway_list.html:80
-#: templates/app_gateway/application_details.html:39
+#: templates/app_gateway/app_gateway_list.html:88
+#: templates/app_gateway/application_details.html:47
msgid "Default (Deny)"
msgstr "Predeterminado (Denegar)"
-#: templates/app_gateway/app_gateway_list.html:90
+#: templates/app_gateway/app_gateway_list.html:98
msgid "No Applications found."
msgstr "No se han encontrado aplicaciones."
-#: templates/app_gateway/app_gateway_list.html:102
+#: templates/app_gateway/app_gateway_list.html:110
msgid "Application"
msgstr "Aplicación"
-#: templates/app_gateway/app_gateway_list.html:121
+#: templates/app_gateway/app_gateway_list.html:129
msgid "No Hosts found."
msgstr "No se han encontrado hosts."
-#: templates/app_gateway/app_gateway_list.html:129
+#: templates/app_gateway/app_gateway_list.html:137
msgid "Add Access Policy"
msgstr "Añadir política de acceso"
-#: templates/app_gateway/app_gateway_list.html:140
-#: templates/gatekeeper/gatekeeper_list.html:43
-#: templates/gatekeeper/gatekeeper_list.html:64
+#: templates/app_gateway/app_gateway_list.html:148
+#: templates/gatekeeper/gatekeeper_list.html:44
+#: templates/gatekeeper/gatekeeper_list.html:65
msgid "Groups"
msgstr "Grupos"
-#: templates/app_gateway/app_gateway_list.html:141
+#: templates/app_gateway/app_gateway_list.html:149
msgid "Auth Methods"
msgstr "Métodos de autenticación"
-#: templates/app_gateway/app_gateway_list.html:142
-#: templates/app_gateway/application_details.html:62
-#: templates/app_gateway/application_details.html:109
-#: templates/gatekeeper/gatekeeper_list.html:65
-#: templates/gatekeeper/gatekeeper_list.html:122
-#: templates/gatekeeper/gatekeeper_list.html:167
-#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/app_gateway/app_gateway_list.html:150
+#: templates/app_gateway/application_details.html:76
+#: templates/app_gateway/application_details.html:138
+#: templates/gatekeeper/gatekeeper_list.html:66
+#: templates/gatekeeper/gatekeeper_list.html:123
+#: templates/gatekeeper/gatekeeper_list.html:168
+#: templates/gatekeeper/gatekeeper_list.html:215
#: templates/scheduler/scheduleprofile_form.html:111
#: templates/scheduler/scheduleprofile_list.html:15
#: templates/wireguard/apply_route_template.html:28
msgid "Actions"
msgstr "Acciones"
-#: templates/app_gateway/app_gateway_list.html:169
+#: templates/app_gateway/app_gateway_list.html:177
msgid "No Access Policies found."
msgstr "No se han encontrado políticas de acceso."
@@ -2285,34 +2390,79 @@ msgstr "No se han encontrado políticas de acceso."
msgid "Back to List"
msgstr "Volver a la lista"
-#: templates/app_gateway/application_details.html:41
+#: templates/app_gateway/application_details.html:15
+#: templates/app_gateway/application_details.html:59
+#: templates/app_gateway/application_details.html:91
+#: templates/app_gateway/application_details.html:94
+msgid "This application cannot be modified"
+msgstr ""
+
+#: templates/app_gateway/application_details.html:18
+#, fuzzy
+#| msgid "Application Route deleted successfully."
+msgid "This application cannot be deleted"
+msgstr "Ruta de la aplicación eliminada correctamente."
+
+#: templates/app_gateway/application_details.html:49
msgid "Set Policy"
msgstr "Establecer política"
-#: templates/app_gateway/application_details.html:48
+#: templates/app_gateway/application_details.html:56
msgid "Application Hosts"
msgstr "Hosts de la aplicación"
-#: templates/app_gateway/application_details.html:52
+#: templates/app_gateway/application_details.html:60
+#: templates/app_gateway/application_details.html:65
msgid "Add Host"
msgstr "Añadir host"
-#: templates/app_gateway/application_details.html:86
+#: templates/app_gateway/application_details.html:115
msgid "No Hosts configured for this application."
msgstr "No hay hosts configurados para esta aplicación."
-#: templates/app_gateway/application_details.html:92
+#: templates/app_gateway/application_details.html:121
msgid "Application Routes"
msgstr "Rutas de la aplicación"
-#: templates/app_gateway/application_details.html:96
+#: templates/app_gateway/application_details.html:125
msgid "Add Route"
msgstr "Añadir ruta"
-#: templates/app_gateway/application_details.html:136
+#: templates/app_gateway/application_details.html:165
msgid "No Routes configured for this application."
msgstr "No hay rutas configuradas para esta aplicación."
+#: templates/app_gateway/caddy_disabled_alert.html:5
+#, fuzzy
+#| msgid "Cluster is not enabled"
+msgid "Caddy is not enabled"
+msgstr "Cluster no está habilitado"
+
+#: templates/app_gateway/caddy_disabled_alert.html:6
+msgid ""
+"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway "
+"container to be running. Please start the application using docker-"
+"compose-caddy.yml."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:7
+msgid ""
+"Depending on your custom firewall or proxy rules, the way you access "
+"wireguard_webadmin may change slightly after enabling Caddy."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:8
+msgid ""
+"Switching to Caddy is simple, but it may require a bit of time and attention "
+"to review your current setup."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:9
+#, fuzzy
+#| msgid "For more information, please visit:"
+msgid "For more information, see the discussion:"
+msgstr "Para obtener más información, visite:"
+
#: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72
#: templates/scheduler/scheduleprofile_form.html:82
#: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78
@@ -2818,86 +2968,93 @@ msgstr ""
msgid "Create Port forwarding Rule"
msgstr "Crear regla de reenvío de puerto"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:63
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:67
#: templates/gatekeeper/gatekeeper_user_form.html:43
msgid "View QR Code"
msgstr "Ver código QR"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:64
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:68
#: templates/gatekeeper/gatekeeper_user_form.html:44
msgid "Generate TOTP Secret"
msgstr "Generar Secreto TOTP"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:93
-#: templates/gatekeeper/gatekeeper_user_form.html:73
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:105
+#: templates/gatekeeper/gatekeeper_user_form.html:81
msgid "Please enter a TOTP Secret first to generate the QR code."
msgstr ""
"Por favor, introduzca primero un secreto TOTP para generar el código QR."
-#: templates/gatekeeper/gatekeeper_list.html:18
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:127
+#: templates/gatekeeper/gatekeeper_user_form.html:103
+#, fuzzy
+#| msgid "Error creating invite."
+msgid "Error generating QR code."
+msgstr "Error al crear invitación."
+
+#: templates/gatekeeper/gatekeeper_list.html:19
msgid "Gatekeeper Users"
msgstr "Usuarios de Gatekeeper"
-#: templates/gatekeeper/gatekeeper_list.html:24
+#: templates/gatekeeper/gatekeeper_list.html:25
msgid "Allowed Emails & Domains"
msgstr "Correos electrónicos y dominios permitidos"
-#: templates/gatekeeper/gatekeeper_list.html:30
+#: templates/gatekeeper/gatekeeper_list.html:31
msgid "IP Addresses"
msgstr "Direcciones IP"
-#: templates/gatekeeper/gatekeeper_list.html:40
+#: templates/gatekeeper/gatekeeper_list.html:41
#: templates/user_manager/peer_group_list.html:11
msgid "Users"
msgstr "Usuarios"
-#: templates/gatekeeper/gatekeeper_list.html:51
+#: templates/gatekeeper/gatekeeper_list.html:52
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
msgid "Add User"
msgstr "Añadir usuario"
-#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:64
msgid "TOTP"
msgstr "TOTP"
-#: templates/gatekeeper/gatekeeper_list.html:104
+#: templates/gatekeeper/gatekeeper_list.html:105
msgid "No Gatekeeper Users found."
msgstr "No se han encontrado usuarios de Gatekeeper."
-#: templates/gatekeeper/gatekeeper_list.html:111
+#: templates/gatekeeper/gatekeeper_list.html:112
msgid "Add Group"
msgstr "Añadir grupo"
-#: templates/gatekeeper/gatekeeper_list.html:147
+#: templates/gatekeeper/gatekeeper_list.html:148
msgid "No Gatekeeper Groups found."
msgstr "No se han encontrado grupos de Gatekeeper."
-#: templates/gatekeeper/gatekeeper_list.html:156
+#: templates/gatekeeper/gatekeeper_list.html:157
msgid "Add Auth Method"
msgstr "Añadir método de autenticación"
-#: templates/gatekeeper/gatekeeper_list.html:192
+#: templates/gatekeeper/gatekeeper_list.html:193
msgid "No Authentication Methods found."
msgstr "No se han encontrado métodos de autenticación."
-#: templates/gatekeeper/gatekeeper_list.html:212
+#: templates/gatekeeper/gatekeeper_list.html:213
msgid "Identity"
msgstr "Identidad"
-#: templates/gatekeeper/gatekeeper_list.html:213
-#: templates/gatekeeper/gatekeeper_list.html:275
+#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/gatekeeper/gatekeeper_list.html:276
msgid "Auth Method"
msgstr "Método de autenticación"
-#: templates/gatekeeper/gatekeeper_list.html:257
+#: templates/gatekeeper/gatekeeper_list.html:258
msgid "No Allowed Emails or Domains found."
msgstr "No se han encontrado correos electrónicos o dominios permitidos."
-#: templates/gatekeeper/gatekeeper_list.html:276
+#: templates/gatekeeper/gatekeeper_list.html:277
msgid "Manage"
msgstr "Gestionar"
-#: templates/gatekeeper/gatekeeper_list.html:309
+#: templates/gatekeeper/gatekeeper_list.html:310
msgid "No IP Addresses found."
msgstr "No se han encontrado direcciones IP."
@@ -3517,6 +3674,10 @@ msgid "Please type \\\"delete\\\" to remove peer configuration."
msgstr ""
"Por favor escribe \\\"delete\\\" para eliminar la configuración del peer."
+#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
+msgid "Display Name"
+msgstr "Nombre para mostrar"
+
#: templates/wireguard/wireguard_manage_server.html:27
msgid ""
"\n"
@@ -4494,5 +4655,25 @@ msgid "No interfaces found|No WireGuard interfaces were found to process."
msgstr ""
"No se encontraron interfaces|No hay interfaces WireGuard para procesar."
+#~ msgid "This is a reserved system name."
+#~ msgstr "Este es un nombre de sistema reservado."
+
+#~ msgid ""
+#~ "TOTP must be combined with a Local Password or OpenID Connect "
+#~ "authentication method."
+#~ msgstr ""
+#~ "TOTP debe combinarse con un método de autenticación de Contraseña Local o "
+#~ "OpenID Connect."
+
+#~ msgid "Route identifier, used in export (e.g.: public_area)"
+#~ msgstr "Identificador de ruta, usado en la exportación (ej.: public_area)"
+
+#~ msgid ""
+#~ "Caddy is not active. Configuration files were exported for debugging "
+#~ "purposes."
+#~ msgstr ""
+#~ "Caddy no está activo. Los archivos de configuração se exportaron con "
+#~ "fines de depuración."
+
#~ msgid "Global TOTP Before Authentication"
#~ msgstr "TOTP global antes de la autenticación"
diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo
index 7f58257..6a2dd5f 100644
Binary files a/locale/fr/LC_MESSAGES/django.mo and b/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 7a3e052..a5f79c0 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-15 17:28-0300\n"
+"POT-Creation-Date: 2026-03-18 10:58-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -33,17 +33,17 @@ msgstr "Retour"
#: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129
#: routing_templates/forms.py:37
-#: templates/app_gateway/app_gateway_list.html:158
-#: templates/app_gateway/application_details.html:75
-#: templates/app_gateway/application_details.html:125
+#: templates/app_gateway/app_gateway_list.html:166
+#: templates/app_gateway/application_details.html:103
+#: templates/app_gateway/application_details.html:154
#: templates/firewall/manage_firewall_rule.html:382
#: templates/firewall/manage_redirect_rule.html:86
-#: templates/gatekeeper/gatekeeper_list.html:93
-#: templates/gatekeeper/gatekeeper_list.html:136
-#: templates/gatekeeper/gatekeeper_list.html:181
-#: templates/gatekeeper/gatekeeper_list.html:229
-#: templates/gatekeeper/gatekeeper_list.html:246
-#: templates/gatekeeper/gatekeeper_list.html:298
+#: templates/gatekeeper/gatekeeper_list.html:94
+#: templates/gatekeeper/gatekeeper_list.html:137
+#: templates/gatekeeper/gatekeeper_list.html:182
+#: templates/gatekeeper/gatekeeper_list.html:230
+#: templates/gatekeeper/gatekeeper_list.html:247
+#: templates/gatekeeper/gatekeeper_list.html:299
#: templates/scheduler/scheduleprofile_form.html:127
#: templates/scheduler/scheduleprofile_list.html:29
#: templates/wireguard/peer_list/peer_preview_modal.html:109
@@ -64,12 +64,12 @@ msgstr ""
"Êtes-vous sûr de vouloir régénérer le jeton ? L'ancien jeton cessera de "
"fonctionner immédiatement."
-#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92
-#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237
-#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124
-#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70
-#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299
-#: gatekeeper/forms.py:329 gatekeeper/forms.py:360
+#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99
+#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241
+#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124
+#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71
+#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362
+#: gatekeeper/forms.py:392 gatekeeper/forms.py:423
#: routing_templates/forms.py:71 scheduler/forms.py:102
#: templates/firewall/manage_firewall_rule.html:379
#: templates/firewall/manage_firewall_settings.html:59
@@ -82,14 +82,14 @@ msgstr ""
msgid "Save"
msgstr "Enregistrer"
-#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106
-#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174
+#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113
+#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188
#: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47
-#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58
-#: templates/app_gateway/app_gateway_list.html:138
-#: templates/app_gateway/application_details.html:26
+#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66
+#: templates/app_gateway/app_gateway_list.html:146
+#: templates/app_gateway/application_details.html:35
#: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68
-#: templates/gatekeeper/gatekeeper_list.html:165
+#: templates/gatekeeper/gatekeeper_list.html:166
#: templates/routing_templates/list.html:8
#: templates/scheduler/scheduleprofile_list.html:13
#: templates/user_manager/peer_group_list.html:8
@@ -127,16 +127,16 @@ msgid "Enabled"
msgstr "Activé"
#: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106
-#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68
-#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170
-#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267
-#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354
-#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18
-#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23
-#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121
-#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222
-#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334
-#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436
+#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83
+#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196
+#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297
+#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384
+#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18
+#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25
+#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125
+#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226
+#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350
+#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452
#: templates/access_denied.html:9
msgid "Access Denied"
msgstr "Accès refusé"
@@ -206,20 +206,19 @@ msgstr "Êtes-vous sûr de vouloir supprimer la clé d'API \"%(name)s\" ?"
msgid "API Documentation"
msgstr "Documentation de l'API"
-#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27
-#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
-msgid "Display Name"
-msgstr "Nom à afficher"
-
-#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59
-#: templates/app_gateway/application_details.html:28
+#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67
+#: templates/app_gateway/application_details.html:36
msgid "Upstream"
msgstr "Upstream"
-#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137
-#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279
-#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213
-#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361
+#: app_gateway/forms.py:20
+msgid "Allow invalid/self-signed certificate"
+msgstr ""
+
+#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145
+#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284
+#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240
+#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424
#: scheduler/forms.py:103
#: templates/app_gateway/access_policy_type_select.html:50
#: templates/generic_delete_confirmation.html:19
@@ -227,60 +226,66 @@ msgstr "Upstream"
msgid "Cancel"
msgstr "Annuler"
-#: app_gateway/forms.py:54
-msgid "This is a reserved system name."
-msgstr "Il s'agit d'un nom de système réservé."
-
-#: app_gateway/forms.py:58
+#: app_gateway/forms.py:55
msgid "This upstream is reserved by the system."
msgstr "Cet upstream est réservé par le système."
-#: app_gateway/forms.py:61
+#: app_gateway/forms.py:58
msgid "Upstream URL cannot contain spaces."
msgstr "L'URL upstream ne peut pas contenir d'espaces."
-#: app_gateway/forms.py:67
+#: app_gateway/forms.py:64
msgid "Enter a valid upstream URL starting with http:// or https://"
msgstr "Entrez une URL upstream valide commençant par http:// ou https://"
-#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65
-#: templates/app_gateway/app_gateway_list.html:101
-#: templates/app_gateway/application_details.html:61
+#: app_gateway/forms.py:66
+msgid ""
+"Upstream must be a bare host address with no path, query or fragment. Use "
+"http://host or http://host:port"
+msgstr ""
+
+#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65
+#: templates/app_gateway/app_gateway_list.html:109
+#: templates/app_gateway/application_details.html:75
#: templates/dns/static_host_list.html:17
#: templates/wireguard/server_detail.html:39
msgid "Hostname"
msgstr "Nom d’hôte"
-#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139
+#: app_gateway/forms.py:84
+msgid "Hostname contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147
msgid "Policy Type"
msgstr "Type de politique"
-#: app_gateway/forms.py:108
+#: app_gateway/forms.py:115
msgid "Allowed Groups"
msgstr "Groupes autorisés"
-#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12
+#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13
msgid "Authentication Methods"
msgstr "Méthodes d'authentification"
-#: app_gateway/forms.py:188
+#: app_gateway/forms.py:196
msgid "Cannot select more than one Local Password authentication method."
msgstr ""
"Impossible de sélectionner plus d'une méthode d'authentification par mot de "
"passe local."
-#: app_gateway/forms.py:192
+#: app_gateway/forms.py:200
msgid ""
"Cannot select more than one OpenID Connect (OIDC) authentication method."
msgstr ""
"Impossible de sélectionner plus d'une méthode d'authentification OpenID "
"Connect (OIDC)."
-#: app_gateway/forms.py:196
+#: app_gateway/forms.py:204
msgid "Cannot select more than one TOTP authentication method."
msgstr "Impossible de sélectionner plus d'une méthode d'authentification TOTP."
-#: app_gateway/forms.py:200
+#: app_gateway/forms.py:208
msgid ""
"Cannot select both Local Password and OpenID Connect (OIDC) authentication "
"methods."
@@ -288,15 +293,7 @@ msgstr ""
"Impossible de sélectionner à la fois les méthodes d'authentification par mot "
"de passe local et OpenID Connect (OIDC)."
-#: app_gateway/forms.py:204
-msgid ""
-"TOTP must be combined with a Local Password or OpenID Connect authentication "
-"method."
-msgstr ""
-"Le TOTP doit être combiné avec une méthode d'authentification par Mot de "
-"passe local ou OpenID Connect."
-
-#: app_gateway/forms.py:208
+#: app_gateway/forms.py:212
msgid ""
"At least one user group must be selected when using Local Password "
"authentication."
@@ -304,75 +301,102 @@ msgstr ""
"Au moins un groupe d'utilisateurs doit être sélectionné lors de "
"l'utilisation de l'authentification par mot de passe local."
-#: app_gateway/forms.py:212
+#: app_gateway/forms.py:216
msgid "User groups can only be used with Local Password authentication."
msgstr ""
"Les groupes d'utilisateurs ne peuvent être utilisés qu'avec "
"l'authentification par mot de passe local."
-#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62
-#: templates/app_gateway/application_details.html:31
+#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70
+#: templates/app_gateway/application_details.html:39
#: templates/firewall/firewall_nav_tabs.html:15
msgid "Default Policy"
msgstr "Politique par défaut"
-#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105
+#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134
msgid "Route Name"
msgstr "Nom de la route"
-#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106
+#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135
msgid "Path Prefix"
msgstr "Préfixe de chemin"
-#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107
+#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136
msgid "Policy"
msgstr "Politique"
-#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108
+#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137
msgid "Order"
msgstr "Ordre"
-#: app_gateway/models.py:12
+#: app_gateway/forms.py:299
+#, fuzzy
+#| msgid "Invite URL must start with 'https://'."
+msgid "Path prefix must start with /."
+msgstr "L’URL d’invitation doit commencer par « https:// »."
+
+#: app_gateway/forms.py:301
+#, fuzzy
+#| msgid "Upstream URL cannot contain spaces."
+msgid "Path prefix cannot contain spaces."
+msgstr "L'URL upstream ne peut pas contenir d'espaces."
+
+#: app_gateway/forms.py:303
+msgid "Path prefix contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:308
+#, fuzzy
+#| msgid "This upstream is reserved by the system."
+msgid "This path prefix is reserved by the system."
+msgstr "Cet upstream est réservé par le système."
+
+#: app_gateway/models.py:14
msgid "Upstream address, e.g.: http://10.188.18.27:3000"
msgstr "Adresse en amont, ex : http://10.188.18.27:3000"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:15
+msgid "Allow invalid or self-signed TLS certificates from the upstream"
+msgstr ""
+
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:19
msgid "Public"
msgstr "Public"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:30
msgid "Protected"
msgstr "Protégé"
-#: app_gateway/models.py:45 gatekeeper/models.py:108
+#: app_gateway/models.py:53 gatekeeper/models.py:142
#: templates/app_gateway/access_policy_type_select.html:41
-#: templates/gatekeeper/gatekeeper_list.html:288
+#: templates/gatekeeper/gatekeeper_list.html:289
msgid "Deny"
msgstr "Refuser"
-#: app_gateway/models.py:80
-msgid "Route identifier, used in export (e.g.: public_area)"
-msgstr "Identifiant d'itinéraire, utilisé dans l'exportation (ex: public_area)"
-
-#: app_gateway/views.py:60
+#: app_gateway/views.py:75
msgid "Application Details"
msgstr "Détails de l'application"
-#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15
+#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204
+msgid "The WireGuard WebAdmin application cannot be modified."
+msgstr ""
+
+#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16
+#: templates/app_gateway/application_details.html:23
msgid "Edit Application"
msgstr "Modifier l'application"
-#: app_gateway/views.py:77
+#: app_gateway/views.py:95
msgid "Create Application"
msgstr "Créer une application"
-#: app_gateway/views.py:84
+#: app_gateway/views.py:102
msgid "Application saved successfully."
msgstr "Application enregistrée avec succès."
-#: app_gateway/views.py:89
+#: app_gateway/views.py:107
msgid ""
"\n"
" Application
\n"
@@ -407,62 +431,67 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:120
+#: app_gateway/views.py:137
+msgid "The WireGuard WebAdmin application cannot be deleted."
+msgstr ""
+
+#: app_gateway/views.py:142
msgid "Application deleted successfully."
msgstr "Application supprimée avec succès."
-#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18
+#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19
+#: templates/app_gateway/application_details.html:26
msgid "Delete Application"
msgstr "Supprimer l'application"
-#: app_gateway/views.py:127
+#: app_gateway/views.py:149
#, python-format
msgid "Are you sure you want to delete the application \"%(name)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer l'application \"%(name)s\" ?"
-#: app_gateway/views.py:143
+#: app_gateway/views.py:165
msgid "Edit Application Host"
msgstr "Modifier l'hôte d'application"
-#: app_gateway/views.py:147
+#: app_gateway/views.py:169
msgid "Add Application Host"
msgstr "Ajouter un hôte d'application"
-#: app_gateway/views.py:156
+#: app_gateway/views.py:182
msgid "Application Host saved successfully."
msgstr "Hôte d'application enregistré avec succès."
-#: app_gateway/views.py:179
+#: app_gateway/views.py:209
msgid "Application Host deleted successfully."
msgstr "Hôte d'application supprimé avec succès."
-#: app_gateway/views.py:184
+#: app_gateway/views.py:214
msgid "Delete Application Host"
msgstr "Supprimer l'hôte d'application"
-#: app_gateway/views.py:186
+#: app_gateway/views.py:216
#, python-format
msgid "Are you sure you want to delete the host \"%(hostname)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer l'hôte \"%(hostname)s\" ?"
-#: app_gateway/views.py:197
+#: app_gateway/views.py:227
#: templates/app_gateway/access_policy_type_select.html:9
msgid "Select Access Policy Type"
msgstr "Sélectionner le type de politique d'accès"
-#: app_gateway/views.py:212
+#: app_gateway/views.py:242
msgid "Edit Access Policy"
msgstr "Modifier la politique d'accès"
-#: app_gateway/views.py:216
+#: app_gateway/views.py:246
msgid "Create Access Policy"
msgstr "Créer une politique d'accès"
-#: app_gateway/views.py:223
+#: app_gateway/views.py:253
msgid "Access Policy saved successfully."
msgstr "Politique d'accès enregistrée avec succès."
-#: app_gateway/views.py:229
+#: app_gateway/views.py:259
msgid ""
"\n"
" Public Policy
\n"
@@ -476,7 +505,7 @@ msgstr ""
"nécessiter d'authentification.\n"
" "
-#: app_gateway/views.py:237
+#: app_gateway/views.py:267
msgid ""
"\n"
" Deny Policy
\n"
@@ -489,7 +518,7 @@ msgstr ""
"correspondants.\n"
" "
-#: app_gateway/views.py:245
+#: app_gateway/views.py:275
msgid ""
"\n"
" Protected Policy
\n"
@@ -520,11 +549,11 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:276
+#: app_gateway/views.py:306
msgid "Access Policy deleted successfully."
msgstr "Politique d'accès supprimée avec succès."
-#: app_gateway/views.py:278
+#: app_gateway/views.py:308
msgid ""
"Cannot delete this Access Policy because it is currently in use by an "
"Application Route or Application Default Policy."
@@ -533,55 +562,55 @@ msgstr ""
"utilisée par un itinéraire d'application ou une politique par défaut "
"d'application."
-#: app_gateway/views.py:283
+#: app_gateway/views.py:313
msgid "Delete Access Policy"
msgstr "Supprimer la politique d'accès"
-#: app_gateway/views.py:285
+#: app_gateway/views.py:315
#, python-format
msgid "Are you sure you want to delete the access policy \"%(name)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer la politique d'accès \"%(name)s\" ?"
-#: app_gateway/views.py:301
+#: app_gateway/views.py:331
msgid "Edit Application Default Policy"
msgstr "Modifier la politique par défaut de l'application"
-#: app_gateway/views.py:305
+#: app_gateway/views.py:335
msgid "Set Application Default Policy"
msgstr "Définir la politique par défaut de l'application"
-#: app_gateway/views.py:314
+#: app_gateway/views.py:344
msgid "Application Default Policy saved successfully."
msgstr "Politique par défaut de l'application enregistrée avec succès."
-#: app_gateway/views.py:337
+#: app_gateway/views.py:367
msgid "Application Default Policy deleted successfully."
msgstr "Politique par défaut de l'application supprimée avec succès."
-#: app_gateway/views.py:342
+#: app_gateway/views.py:372
msgid "Delete Application Default Policy"
msgstr "Supprimer la politique par défaut de l'application"
-#: app_gateway/views.py:344
+#: app_gateway/views.py:374
#, python-format
msgid "Are you sure you want to remove the default policy for \"%(name)s\"?"
msgstr ""
"Êtes-vous sûr de vouloir supprimer la politique par défaut pour "
"\"%(name)s\" ?"
-#: app_gateway/views.py:362
+#: app_gateway/views.py:392
msgid "Edit Application Route"
msgstr "Modifier la route de l'application"
-#: app_gateway/views.py:366
+#: app_gateway/views.py:396
msgid "Add Application Route"
msgstr "Ajouter une route d'application"
-#: app_gateway/views.py:375
+#: app_gateway/views.py:405
msgid "Application Route saved successfully."
msgstr "Route d'application enregistrée avec succès."
-#: app_gateway/views.py:380
+#: app_gateway/views.py:410
msgid ""
"\n"
" Application Route
\n"
@@ -623,42 +652,41 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:413
+#: app_gateway/views.py:443
msgid "Application Route deleted successfully."
msgstr "Route d'application supprimée avec succès."
-#: app_gateway/views.py:418
+#: app_gateway/views.py:448
msgid "Delete Application Route"
msgstr "Supprimer la route d'application"
-#: app_gateway/views.py:420
+#: app_gateway/views.py:450
#, python-format
msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?"
msgstr "Êtes-vous sûr de vouloir supprimer la route \"%(name)s\" (%(path)s) ?"
-#: app_gateway/views.py:443
+#: app_gateway/views.py:468
+msgid ""
+"Configuration export is not available because Caddy is not enabled. To use "
+"App Gateway and Gatekeeper, start the application using docker-compose-"
+"caddy.yml."
+msgstr ""
+
+#: app_gateway/views.py:478
msgid "Configuration exported successfully."
msgstr "Configuration exportée avec succès."
-#: app_gateway/views.py:445
-msgid ""
-"Caddy is not active. Configuration files were exported for debugging "
-"purposes."
-msgstr ""
-"Caddy n'est pas actif. Les fichiers de configuration ont été exportés à des "
-"fins de débogage."
-
#: cluster/forms.py:20
msgid "IP Lock"
msgstr "Verrouillage IP"
-#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271
+#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315
#: 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/gatekeeper/gatekeeper_list.html:272
+#: templates/gatekeeper/gatekeeper_list.html:273
#: templates/wireguard/wireguard_status.html:45
msgid "IP Address"
msgstr "Adresse IP"
@@ -934,7 +962,7 @@ msgstr "DNS statique"
msgid "Invalid hostname."
msgstr "Nom d'hôte invalide."
-#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274
+#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318
#: templates/api_v2/api_documentation.html:51
#: templates/dns/static_host_list.html:69
#: templates/firewall/manage_redirect_rule.html:18
@@ -1268,13 +1296,13 @@ msgstr "Gérer les paramètres du pare‑feu"
msgid "Firewall settings saved successfully"
msgstr "Paramètres du pare‑feu enregistrés avec succès"
-#: gatekeeper/forms.py:17 templates/accounts/login.html:23
+#: gatekeeper/forms.py:18 templates/accounts/login.html:23
#: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14
#: vpn_invite/forms.py:282
msgid "Password"
msgstr "Mot de passe"
-#: gatekeeper/forms.py:20
+#: gatekeeper/forms.py:21
msgid ""
"Minimum 8 characters, with at least one uppercase letter, one lowercase "
"letter, and one number."
@@ -1282,15 +1310,15 @@ msgstr ""
"Minimum 8 caractères, avec au moins une lettre majuscule, une lettre "
"minuscule et un chiffre."
-#: gatekeeper/forms.py:23
+#: gatekeeper/forms.py:24
msgid "Confirm Password"
msgstr "Confirmer le mot de passe"
-#: gatekeeper/forms.py:28 gatekeeper/forms.py:161
+#: gatekeeper/forms.py:29 gatekeeper/forms.py:163
msgid "TOTP Validation PIN"
msgstr "Code de validation TOTP"
-#: gatekeeper/forms.py:31 gatekeeper/forms.py:164
+#: gatekeeper/forms.py:32 gatekeeper/forms.py:166
msgid ""
"Enter a 6-digit PIN generated by your authenticator app to validate the "
"secret."
@@ -1298,193 +1326,227 @@ msgstr ""
"Saisissez un code à 6 chiffres généré par votre application "
"d'authentification pour valider le secret."
-#: gatekeeper/forms.py:38 templates/accounts/login.html:14
-#: templates/gatekeeper/gatekeeper_list.html:61
+#: gatekeeper/forms.py:39 templates/accounts/login.html:14
+#: templates/gatekeeper/gatekeeper_list.html:62
#: templates/user_manager/list.html:8 user_manager/forms.py:13
#: vpn_invite/forms.py:281
msgid "Username"
msgstr "Nom d’utilisateur"
-#: gatekeeper/forms.py:39 gatekeeper/forms.py:344
-#: templates/gatekeeper/gatekeeper_list.html:62
-#: templates/gatekeeper/gatekeeper_list.html:220
+#: gatekeeper/forms.py:40 gatekeeper/forms.py:407
+#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:221
#: templates/wireguard/peer_list/peer_preview_modal.html:103
msgid "Email"
msgstr "E‑mail"
-#: gatekeeper/forms.py:40
+#: gatekeeper/forms.py:41
msgid "TOTP Secret"
msgstr "Secret TOTP"
-#: gatekeeper/forms.py:87
+#: gatekeeper/forms.py:88
msgid "Password is required."
msgstr "Le mot de passe est obligatoire."
-#: gatekeeper/forms.py:90 user_manager/forms.py:127
+#: gatekeeper/forms.py:91 user_manager/forms.py:127
msgid "Password must be at least 8 characters long."
msgstr "Le mot de passe doit comporter au moins 8 caractères."
-#: gatekeeper/forms.py:92
+#: gatekeeper/forms.py:93
msgid "Password must contain at least one lowercase letter."
msgstr "Le mot de passe doit contenir au moins une lettre minuscule."
-#: gatekeeper/forms.py:94
+#: gatekeeper/forms.py:95
msgid "Password must contain at least one uppercase letter."
msgstr "Le mot de passe doit contenir au moins une lettre majuscule."
-#: gatekeeper/forms.py:96
+#: gatekeeper/forms.py:97
msgid "Password must contain at least one number."
msgstr "Le mot de passe doit contenir au moins un chiffre."
-#: gatekeeper/forms.py:98
+#: gatekeeper/forms.py:99
msgid "Passwords do not match."
msgstr "Les mots de passe ne correspondent pas."
-#: gatekeeper/forms.py:103 gatekeeper/forms.py:249
+#: gatekeeper/forms.py:104 gatekeeper/forms.py:276
msgid "Please provide a PIN to validate the TOTP secret."
msgstr "Veuillez fournir un code pour valider le secret TOTP."
-#: gatekeeper/forms.py:108 gatekeeper/forms.py:254
+#: gatekeeper/forms.py:109 gatekeeper/forms.py:281
msgid "Invalid TOTP PIN."
msgstr "Code TOTP invalide."
-#: gatekeeper/forms.py:110 gatekeeper/forms.py:256
+#: gatekeeper/forms.py:111 gatekeeper/forms.py:283
msgid "Invalid TOTP secret format. Must be a valid Base32 string."
msgstr "Format du secret TOTP invalide. Doit être une chaîne Base32 valide."
-#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120
+#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
msgid "Group Name"
msgstr "Nom du groupe"
-#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
+#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122
msgid "Members"
msgstr "Membres"
+#: gatekeeper/forms.py:169
+#, fuzzy
+#| msgid "Expiration"
+msgid "Session Expiration"
+msgstr "Expiration"
+
#: gatekeeper/forms.py:175
+msgid "Unit"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Hour(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Day(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:189
msgid "Authentication Type"
msgstr "Type d'authentification"
-#: gatekeeper/forms.py:176
+#: gatekeeper/forms.py:190
msgid "Global TOTP Secret"
msgstr "Secret TOTP mondial"
-#: gatekeeper/forms.py:177
+#: gatekeeper/forms.py:191
msgid "OIDC Provider URL"
msgstr "URL du fournisseur OIDC"
-#: gatekeeper/forms.py:178
+#: gatekeeper/forms.py:192
msgid "OIDC Client ID"
msgstr "ID client OIDC"
-#: gatekeeper/forms.py:179
+#: gatekeeper/forms.py:193
msgid "OIDC Client Secret"
msgstr "Secret client OIDC"
-#: gatekeeper/forms.py:230
+#: gatekeeper/forms.py:257
msgid "TOTP secret must be empty for Local Password authentication."
msgstr ""
"Le secret TOTP doit être vide pour l'authentification par mot de passe local."
-#: gatekeeper/forms.py:232
+#: gatekeeper/forms.py:259
msgid "TOTP validation PIN must be empty for Local Password authentication."
msgstr ""
"Le code de validation TOTP doit être vide pour l'authentification par mot de "
"passe local."
-#: gatekeeper/forms.py:234
+#: gatekeeper/forms.py:261
msgid "OIDC fields must be empty for Local Password authentication."
msgstr ""
"Les champs OIDC doivent être vides pour l'authentification par mot de passe "
"local."
-#: gatekeeper/forms.py:240
+#: gatekeeper/forms.py:267
msgid "Only one Local Password authentication method can be configured."
msgstr ""
"Un seul système d'authentification par mot de passe local peut être "
"configuré."
-#: gatekeeper/forms.py:243
+#: gatekeeper/forms.py:270
msgid "OIDC fields must be empty for TOTP authentication."
msgstr "Les champs OIDC doivent être vides pour l'authentification TOTP."
-#: gatekeeper/forms.py:245
+#: gatekeeper/forms.py:272
msgid "TOTP secret is required for TOTP authentication."
msgstr "Le secret TOTP est requis pour l'authentification TOTP."
-#: gatekeeper/forms.py:259
+#: gatekeeper/forms.py:285
+msgid ""
+"OIDC authentication is temporarily unavailable and will be available soon."
+msgstr ""
+
+#: gatekeeper/forms.py:287
msgid "TOTP secret must be empty for OIDC authentication."
msgstr "Le secret TOTP doit être vide pour l'authentification OIDC."
-#: gatekeeper/forms.py:261
+#: gatekeeper/forms.py:289
msgid "TOTP validation PIN must be empty for OIDC authentication."
msgstr ""
"Le code de validation TOTP doit être vide pour l'authentification OIDC."
-#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343
+#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406
msgid "Authentication Method"
msgstr "Méthode d'authentification"
-#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273
+#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274
msgid "Prefix Length"
msgstr "Longueur du préfixe"
-#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47
+#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47
#: templates/firewall/manage_firewall_rule.html:360
-#: templates/gatekeeper/gatekeeper_list.html:274
+#: templates/gatekeeper/gatekeeper_list.html:275
msgid "Action"
msgstr "Action"
-#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237
+#: gatekeeper/forms.py:332
+#, python-format
+msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d."
+msgstr ""
+
+#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238
msgid "Domain"
msgstr "Domaine"
-#: gatekeeper/models.py:10
+#: gatekeeper/models.py:27
msgid "Local Password"
msgstr "Mot de passe local"
-#: gatekeeper/models.py:11
+#: gatekeeper/models.py:28
msgid "One-Time Password (TOTP)"
msgstr "Mot de passe à usage unique (TOTP)"
-#: gatekeeper/models.py:12
+#: gatekeeper/models.py:29
msgid "OpenID Connect (OIDC)"
msgstr "OpenID Connect (OIDC)"
-#: gatekeeper/models.py:13
+#: gatekeeper/models.py:30
msgid "IP Address List"
msgstr "Liste d'adresses IP"
-#: gatekeeper/models.py:17
+#: gatekeeper/models.py:34
msgid "Shared/global TOTP secret key"
msgstr "Clé secrète TOTP partagée/globale"
-#: gatekeeper/models.py:68
+#: gatekeeper/models.py:39
+#, fuzzy
+#| msgid "Expiration (minutes)"
+msgid "Session expiration time in minutes"
+msgstr "Expiration (minutes)"
+
+#: gatekeeper/models.py:96
msgid "Password for local authentication (leave blank if not using)"
msgstr ""
"Mot de passe pour l'authentification locale (laissez vide si vous ne "
"l'utilisez pas)"
-#: gatekeeper/models.py:69
+#: gatekeeper/models.py:97
msgid "Per-user TOTP secret key"
msgstr "Clé secrète TOTP par utilisateur"
-#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286
+#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287
msgid "Allow"
msgstr "Autoriser"
-#: gatekeeper/views.py:54
+#: gatekeeper/views.py:58
msgid "Edit Gatekeeper User"
msgstr "Modifier l'utilisateur Gatekeeper"
-#: gatekeeper/views.py:57
+#: gatekeeper/views.py:61
msgid "Create Gatekeeper User"
msgstr "Créer un utilisateur Gatekeeper"
-#: gatekeeper/views.py:64
+#: gatekeeper/views.py:68
msgid "Gatekeeper User saved successfully."
msgstr "Utilisateur Gatekeeper enregistré avec succès."
-#: gatekeeper/views.py:69
+#: gatekeeper/views.py:73
msgid ""
"\n"
" Gatekeeper User
\n"
@@ -1528,57 +1590,77 @@ msgstr ""
" 6 chiffres avant d'enregistrer.\n"
" "
-#: gatekeeper/views.py:106
+#: gatekeeper/views.py:110
msgid "Gatekeeper User deleted successfully."
msgstr "Utilisateur Gatekeeper supprimé avec succès."
-#: gatekeeper/views.py:111
+#: gatekeeper/views.py:115
msgid "Delete Gatekeeper User"
msgstr "Supprimer l'utilisateur Gatekeeper"
-#: gatekeeper/views.py:113
+#: gatekeeper/views.py:117
#, python-format
msgid "Are you sure you want to delete the user \"%(username)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur \"%(username)s\" ?"
-#: gatekeeper/views.py:127
+#: gatekeeper/views.py:131
msgid "Edit Gatekeeper Group"
msgstr "Modifier le groupe Gatekeeper"
-#: gatekeeper/views.py:130
+#: gatekeeper/views.py:134
msgid "Create Gatekeeper Group"
msgstr "Créer un groupe Gatekeeper"
-#: gatekeeper/views.py:137
+#: gatekeeper/views.py:141
msgid "Gatekeeper Group saved successfully."
msgstr "Groupe Gatekeeper enregistré avec succès."
-#: gatekeeper/views.py:159
+#: gatekeeper/views.py:163
msgid "Gatekeeper Group deleted successfully."
msgstr "Groupe Gatekeeper supprimé avec succès."
-#: gatekeeper/views.py:164
+#: gatekeeper/views.py:168
msgid "Delete Gatekeeper Group"
msgstr "Supprimer le groupe Gatekeeper"
-#: gatekeeper/views.py:166
+#: gatekeeper/views.py:170
#, python-format
msgid "Are you sure you want to delete the group \"%(name)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer le groupe \"%(name)s\" ?"
-#: gatekeeper/views.py:180
+#: gatekeeper/views.py:184
msgid "Edit Authentication Method"
msgstr "Modifier la méthode d'authentification"
-#: gatekeeper/views.py:183
+#: gatekeeper/views.py:187
msgid "Create Authentication Method"
msgstr "Créer une méthode d'authentification"
-#: gatekeeper/views.py:190
+#: gatekeeper/views.py:194
msgid "Authentication Method saved successfully."
msgstr "Méthode d'authentification enregistrée avec succès."
-#: gatekeeper/views.py:195
+#: gatekeeper/views.py:199
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " Authentication Types
\n"
+#| " Select how users will authenticate through this method.
\n"
+#| " \n"
+#| " Local Password
\n"
+#| " Users will authenticate using a standard username and password "
+#| "stored locally. Only one of this type can be created.
\n"
+#| " \n"
+#| " OIDC (OpenID Connect)
\n"
+#| " Users will authenticate via an external identity provider "
+#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, "
+#| "and Client Secret.
\n"
+#| " \n"
+#| " TOTP (Time-Based One-Time Password)
\n"
+#| " Users will need to enter a rotating token from an "
+#| "authenticator app. If a user does not have a personal TOTP configured, "
+#| "the Global TOTP Secret will be used instead.
\n"
+#| " "
msgid ""
"\n"
" Authentication Types
\n"
@@ -1590,8 +1672,8 @@ msgid ""
" \n"
" OIDC (OpenID Connect)
\n"
" Users will authenticate via an external identity provider (like "
-"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client "
-"Secret.
\n"
+"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret."
+"p>\n"
" \n"
" TOTP (Time-Based One-Time Password)
\n"
" Users will need to enter a rotating token from an authenticator "
@@ -1601,101 +1683,113 @@ msgid ""
msgstr ""
"\n"
"
Types d'authentification
\n"
-" Sélectionnez la manière dont les utilisateurs s'authentifieront via cette méthode.
\n"
+" Sélectionnez la manière dont les utilisateurs s'authentifieront "
+"via cette méthode.
\n"
"\n"
" Mot de passe local
\n"
-" Les utilisateurs s'authentifieront à l'aide d'un nom d'utilisateur et d'un mot de passe "
-"standard stockés localement. Un seul de ce type peut être créé.
\n"
+" Les utilisateurs s'authentifieront à l'aide d'un nom "
+"d'utilisateur et d'un mot de passe standard stockés localement. Un seul de "
+"ce type peut être créé.
\n"
"\n"
" OIDC (OpenID Connect)
\n"
-" Les utilisateurs s'authentifieront via un fournisseur d'identité externe "
-"(comme Keycloak, Google ou Authelia). Nécessite l'URL du fournisseur, l'ID client et le secret client.
\n"
+" Les utilisateurs s'authentifieront via un fournisseur d'identité "
+"externe (comme Keycloak, Google ou Authelia). Nécessite l'URL du "
+"fournisseur, l'ID client et le secret client.
\n"
"\n"
" TOTP (Mot de passe à usage unique basé sur le temps)
\n"
-" Les utilisateurs devront saisir un jeton rotatif à partir d'une application d'authentification. "
-"Si un utilisateur n'a pas configuré de TOTP personnel, le secret TOTP global sera utilisé à la place.
\n"
+" Les utilisateurs devront saisir un jeton rotatif à partir d'une "
+"application d'authentification. Si un utilisateur n'a pas configuré de TOTP "
+"personnel, le secret TOTP global sera utilisé à la place."
+"p>\n"
" "
-#: gatekeeper/views.py:230
+#: gatekeeper/views.py:237
+#, python-format
+msgid ""
+"Cannot delete authentication method \"%(method)s\" because it is used by the "
+"following policies: %(policies)s."
+msgstr ""
+
+#: gatekeeper/views.py:243
msgid "Authentication Method deleted successfully."
msgstr "Méthode d'authentification supprimée avec succès."
-#: gatekeeper/views.py:235
+#: gatekeeper/views.py:248
msgid "Delete Authentication Method"
msgstr "Supprimer la méthode d'authentification"
-#: gatekeeper/views.py:237
+#: gatekeeper/views.py:250
#, python-format
msgid "Are you sure you want to delete the authentication method \"%(name)s\"?"
msgstr ""
"Êtes-vous sûr de vouloir supprimer la méthode d'authentification "
"\"%(name)s\" ?"
-#: gatekeeper/views.py:287
+#: gatekeeper/views.py:303
msgid "Edit Allowed Domain"
msgstr "Modifier le domaine autorisé"
-#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202
+#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203
msgid "Add Allowed Domain"
msgstr "Ajouter un domaine autorisé"
-#: gatekeeper/views.py:297
+#: gatekeeper/views.py:313
msgid "Allowed Domain saved successfully."
msgstr "Domaine autorisé enregistré avec succès."
-#: gatekeeper/views.py:319
+#: gatekeeper/views.py:335
msgid "Allowed Domain deleted successfully."
msgstr "Domaine autorisé supprimé avec succès."
-#: gatekeeper/views.py:324
+#: gatekeeper/views.py:340
msgid "Delete Allowed Domain"
msgstr "Supprimer le domaine autorisé"
-#: gatekeeper/views.py:326
+#: gatekeeper/views.py:342
#, python-format
msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?"
msgstr ""
"Êtes-vous sûr de vouloir supprimer le domaine autorisé \"%(domain)s\" ?"
-#: gatekeeper/views.py:340
+#: gatekeeper/views.py:356
msgid "Edit Allowed Email"
msgstr "Modifier l'e-mail autorisé"
-#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199
+#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200
msgid "Add Allowed Email"
msgstr "Ajouter un e-mail autorisé"
-#: gatekeeper/views.py:350
+#: gatekeeper/views.py:366
msgid "Allowed Email saved successfully."
msgstr "E-mail autorisé enregistré avec succès."
-#: gatekeeper/views.py:372
+#: gatekeeper/views.py:388
msgid "Allowed Email deleted successfully."
msgstr "E-mail autorisé supprimé avec succès."
-#: gatekeeper/views.py:377
+#: gatekeeper/views.py:393
msgid "Delete Allowed Email"
msgstr "Supprimer l'e-mail autorisé"
-#: gatekeeper/views.py:379
+#: gatekeeper/views.py:395
#, python-format
msgid "Are you sure you want to delete the allowed email \"%(email)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer l'e-mail autorisé \"%(email)s\" ?"
-#: gatekeeper/views.py:393
+#: gatekeeper/views.py:409
msgid "Edit IP Address"
msgstr "Modifier l'adresse IP"
-#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263
+#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264
#: templates/wireguard/wireguard_manage_peer.html:171
msgid "Add IP Address"
msgstr "Ajouter une adresse IP"
-#: gatekeeper/views.py:403
+#: gatekeeper/views.py:419
msgid "IP Address saved successfully."
msgstr "Adresse IP enregistrée avec succès."
-#: gatekeeper/views.py:408
+#: gatekeeper/views.py:424
msgid ""
"\n"
"
IP Address List
\n"
@@ -1742,24 +1836,25 @@ msgstr ""
"\"Réseau de bureau\", \"Attaquant bloqué\").\n"
" "
-#: gatekeeper/views.py:444
+#: gatekeeper/views.py:460
msgid "IP Address deleted successfully."
msgstr "Adresse IP supprimée avec succès."
-#: gatekeeper/views.py:449
+#: gatekeeper/views.py:465
msgid "Delete IP Address"
msgstr "Supprimer l'adresse IP"
-#: gatekeeper/views.py:451
+#: gatekeeper/views.py:467
#, python-format
msgid "Are you sure you want to delete the IP address \"%(address)s\"?"
msgstr "Êtes-vous sûr de vouloir supprimer l'adresse IP \"%(address)s\" ?"
-#: intl_tools/forms.py:11 templates/accounts/login.html:36
+#: intl_tools/forms.py:11
msgid "Language"
msgstr "Langue"
-#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14
+#: intl_tools/forms.py:24 templates/accounts/login.html:35
+#: templates/template_parts/base_navbar.html:19
msgid "Change Language"
msgstr "Changer de langue"
@@ -2093,6 +2188,11 @@ msgstr ""
msgid "Login"
msgstr "Connexion"
+#: templates/accounts/login.html:40
+#: templates/template_parts/base_navbar.html:14
+msgid "Toggle Dark Mode"
+msgstr ""
+
#: templates/accounts/logout.html:11
msgid "You have been successfully logged out."
msgstr "Vous avez été déconnecté avec succès."
@@ -2115,8 +2215,8 @@ msgid "In"
msgstr "Entrée"
#: templates/api_v2/api_documentation.html:49
-#: templates/gatekeeper/gatekeeper_list.html:166
-#: templates/gatekeeper/gatekeeper_list.html:211
+#: templates/gatekeeper/gatekeeper_list.html:167
+#: templates/gatekeeper/gatekeeper_list.html:212
#: templates/wireguard/apply_route_template.html:27
msgid "Type"
msgstr "Type"
@@ -2126,13 +2226,13 @@ msgid "Required"
msgstr "Obligatoire"
#: templates/api_v2/api_documentation.html:62
-#: templates/gatekeeper/gatekeeper_list.html:75
+#: templates/gatekeeper/gatekeeper_list.html:76
#: templates/scheduler/scheduleprofile_form.html:175
msgid "Yes"
msgstr "Oui"
#: templates/api_v2/api_documentation.html:64
-#: templates/gatekeeper/gatekeeper_list.html:77
+#: templates/gatekeeper/gatekeeper_list.html:78
#: templates/scheduler/scheduleprofile_form.html:177
msgid "No"
msgstr "Non"
@@ -2172,17 +2272,17 @@ msgid "Disabled"
msgstr "Désactivé"
#: templates/api_v2/list.html:68
-#: templates/app_gateway/app_gateway_list.html:154
-#: templates/app_gateway/application_details.html:71
-#: templates/app_gateway/application_details.html:121
+#: templates/app_gateway/app_gateway_list.html:162
+#: templates/app_gateway/application_details.html:99
+#: templates/app_gateway/application_details.html:150
#: templates/cluster/workers_list.html:77
#: templates/dns/static_host_list.html:74
-#: templates/gatekeeper/gatekeeper_list.html:89
-#: templates/gatekeeper/gatekeeper_list.html:132
-#: templates/gatekeeper/gatekeeper_list.html:177
-#: templates/gatekeeper/gatekeeper_list.html:225
-#: templates/gatekeeper/gatekeeper_list.html:242
-#: templates/gatekeeper/gatekeeper_list.html:294
+#: templates/gatekeeper/gatekeeper_list.html:90
+#: templates/gatekeeper/gatekeeper_list.html:133
+#: templates/gatekeeper/gatekeeper_list.html:178
+#: templates/gatekeeper/gatekeeper_list.html:226
+#: templates/gatekeeper/gatekeeper_list.html:243
+#: templates/gatekeeper/gatekeeper_list.html:295
#: templates/routing_templates/list.html:29
#: templates/scheduler/scheduleprofile_form.html:123
#: templates/scheduler/scheduleprofile_list.html:25
@@ -2215,78 +2315,83 @@ msgstr ""
msgid "Deny all access."
msgstr "Refuser tout accès."
-#: templates/app_gateway/app_gateway_list.html:12
-#: templates/app_gateway/app_gateway_list.html:30
+#: templates/app_gateway/app_gateway_list.html:13
+#: templates/app_gateway/app_gateway_list.html:31
msgid "Applications"
msgstr "Applications"
-#: templates/app_gateway/app_gateway_list.html:18
+#: templates/app_gateway/app_gateway_list.html:19
msgid "Access Policies"
msgstr "Politiques d'accès"
-#: templates/app_gateway/app_gateway_list.html:34
-#: templates/app_gateway/app_gateway_list.html:60
+#: templates/app_gateway/app_gateway_list.html:35
+#: templates/app_gateway/app_gateway_list.html:68
#: templates/dns/static_host_list.html:70
msgid "Hosts"
msgstr "Hôtes"
-#: templates/app_gateway/app_gateway_list.html:42
+#: templates/app_gateway/app_gateway_list.html:44
+#: templates/app_gateway/app_gateway_list.html:50
msgid "Export Configuration"
msgstr "Exporter la configuration"
-#: templates/app_gateway/app_gateway_list.html:46
+#: templates/app_gateway/app_gateway_list.html:49
+msgid "Export is not available because Caddy is not enabled."
+msgstr ""
+
+#: templates/app_gateway/app_gateway_list.html:54
msgid "Add Application"
msgstr "Ajouter une application"
-#: templates/app_gateway/app_gateway_list.html:61
+#: templates/app_gateway/app_gateway_list.html:69
msgid "Routes"
msgstr "Routes"
-#: templates/app_gateway/app_gateway_list.html:80
-#: templates/app_gateway/application_details.html:39
+#: templates/app_gateway/app_gateway_list.html:88
+#: templates/app_gateway/application_details.html:47
msgid "Default (Deny)"
msgstr "Par défaut (Refuser)"
-#: templates/app_gateway/app_gateway_list.html:90
+#: templates/app_gateway/app_gateway_list.html:98
msgid "No Applications found."
msgstr "Aucune application trouvée."
-#: templates/app_gateway/app_gateway_list.html:102
+#: templates/app_gateway/app_gateway_list.html:110
msgid "Application"
msgstr "Application"
-#: templates/app_gateway/app_gateway_list.html:121
+#: templates/app_gateway/app_gateway_list.html:129
msgid "No Hosts found."
msgstr "Aucun hôte trouvé."
-#: templates/app_gateway/app_gateway_list.html:129
+#: templates/app_gateway/app_gateway_list.html:137
msgid "Add Access Policy"
msgstr "Ajouter une politique d'accès"
-#: templates/app_gateway/app_gateway_list.html:140
-#: templates/gatekeeper/gatekeeper_list.html:43
-#: templates/gatekeeper/gatekeeper_list.html:64
+#: templates/app_gateway/app_gateway_list.html:148
+#: templates/gatekeeper/gatekeeper_list.html:44
+#: templates/gatekeeper/gatekeeper_list.html:65
msgid "Groups"
msgstr "Groupes"
-#: templates/app_gateway/app_gateway_list.html:141
+#: templates/app_gateway/app_gateway_list.html:149
msgid "Auth Methods"
msgstr "Méthodes d'authentification"
-#: templates/app_gateway/app_gateway_list.html:142
-#: templates/app_gateway/application_details.html:62
-#: templates/app_gateway/application_details.html:109
-#: templates/gatekeeper/gatekeeper_list.html:65
-#: templates/gatekeeper/gatekeeper_list.html:122
-#: templates/gatekeeper/gatekeeper_list.html:167
-#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/app_gateway/app_gateway_list.html:150
+#: templates/app_gateway/application_details.html:76
+#: templates/app_gateway/application_details.html:138
+#: templates/gatekeeper/gatekeeper_list.html:66
+#: templates/gatekeeper/gatekeeper_list.html:123
+#: templates/gatekeeper/gatekeeper_list.html:168
+#: templates/gatekeeper/gatekeeper_list.html:215
#: templates/scheduler/scheduleprofile_form.html:111
#: templates/scheduler/scheduleprofile_list.html:15
#: templates/wireguard/apply_route_template.html:28
msgid "Actions"
msgstr "Actions"
-#: templates/app_gateway/app_gateway_list.html:169
+#: templates/app_gateway/app_gateway_list.html:177
msgid "No Access Policies found."
msgstr "Aucune politique d'accès trouvée."
@@ -2295,34 +2400,79 @@ msgstr "Aucune politique d'accès trouvée."
msgid "Back to List"
msgstr "Retour à la liste"
-#: templates/app_gateway/application_details.html:41
+#: templates/app_gateway/application_details.html:15
+#: templates/app_gateway/application_details.html:59
+#: templates/app_gateway/application_details.html:91
+#: templates/app_gateway/application_details.html:94
+msgid "This application cannot be modified"
+msgstr ""
+
+#: templates/app_gateway/application_details.html:18
+#, fuzzy
+#| msgid "Application Route deleted successfully."
+msgid "This application cannot be deleted"
+msgstr "Route d'application supprimée avec succès."
+
+#: templates/app_gateway/application_details.html:49
msgid "Set Policy"
msgstr "Définir la politique"
-#: templates/app_gateway/application_details.html:48
+#: templates/app_gateway/application_details.html:56
msgid "Application Hosts"
msgstr "Hôtes d'application"
-#: templates/app_gateway/application_details.html:52
+#: templates/app_gateway/application_details.html:60
+#: templates/app_gateway/application_details.html:65
msgid "Add Host"
msgstr "Ajouter un hôte"
-#: templates/app_gateway/application_details.html:86
+#: templates/app_gateway/application_details.html:115
msgid "No Hosts configured for this application."
msgstr "Aucun hôte configuré pour cette application."
-#: templates/app_gateway/application_details.html:92
+#: templates/app_gateway/application_details.html:121
msgid "Application Routes"
msgstr "Routes d'application"
-#: templates/app_gateway/application_details.html:96
+#: templates/app_gateway/application_details.html:125
msgid "Add Route"
msgstr "Ajouter une route"
-#: templates/app_gateway/application_details.html:136
+#: templates/app_gateway/application_details.html:165
msgid "No Routes configured for this application."
msgstr "Aucune route configurée pour cette application."
+#: templates/app_gateway/caddy_disabled_alert.html:5
+#, fuzzy
+#| msgid "Cluster is not enabled"
+msgid "Caddy is not enabled"
+msgstr "Le cluster n'est pas activé"
+
+#: templates/app_gateway/caddy_disabled_alert.html:6
+msgid ""
+"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway "
+"container to be running. Please start the application using docker-"
+"compose-caddy.yml."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:7
+msgid ""
+"Depending on your custom firewall or proxy rules, the way you access "
+"wireguard_webadmin may change slightly after enabling Caddy."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:8
+msgid ""
+"Switching to Caddy is simple, but it may require a bit of time and attention "
+"to review your current setup."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:9
+#, fuzzy
+#| msgid "For more information, please visit:"
+msgid "For more information, see the discussion:"
+msgstr "Pour plus d'informations, veuillez visiter :"
+
#: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72
#: templates/scheduler/scheduleprofile_form.html:82
#: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78
@@ -2829,85 +2979,92 @@ msgstr ""
msgid "Create Port forwarding Rule"
msgstr "Créer une règle de redirection de port"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:63
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:67
#: templates/gatekeeper/gatekeeper_user_form.html:43
msgid "View QR Code"
msgstr "Voir le code QR"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:64
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:68
#: templates/gatekeeper/gatekeeper_user_form.html:44
msgid "Generate TOTP Secret"
msgstr "Générer un secret TOTP"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:93
-#: templates/gatekeeper/gatekeeper_user_form.html:73
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:105
+#: templates/gatekeeper/gatekeeper_user_form.html:81
msgid "Please enter a TOTP Secret first to generate the QR code."
msgstr "Veuillez d'abord saisir un secret TOTP pour générer le code QR."
-#: templates/gatekeeper/gatekeeper_list.html:18
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:127
+#: templates/gatekeeper/gatekeeper_user_form.html:103
+#, fuzzy
+#| msgid "Error creating invite."
+msgid "Error generating QR code."
+msgstr "Erreur lors de la création de l’invitation."
+
+#: templates/gatekeeper/gatekeeper_list.html:19
msgid "Gatekeeper Users"
msgstr "Utilisateurs de Gatekeeper"
-#: templates/gatekeeper/gatekeeper_list.html:24
+#: templates/gatekeeper/gatekeeper_list.html:25
msgid "Allowed Emails & Domains"
msgstr "E-mails et domaines autorisés"
-#: templates/gatekeeper/gatekeeper_list.html:30
+#: templates/gatekeeper/gatekeeper_list.html:31
msgid "IP Addresses"
msgstr "Adresses IP"
-#: templates/gatekeeper/gatekeeper_list.html:40
+#: templates/gatekeeper/gatekeeper_list.html:41
#: templates/user_manager/peer_group_list.html:11
msgid "Users"
msgstr "Utilisateurs"
-#: templates/gatekeeper/gatekeeper_list.html:51
+#: templates/gatekeeper/gatekeeper_list.html:52
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
msgid "Add User"
msgstr "Ajouter un utilisateur"
-#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:64
msgid "TOTP"
msgstr "TOTP"
-#: templates/gatekeeper/gatekeeper_list.html:104
+#: templates/gatekeeper/gatekeeper_list.html:105
msgid "No Gatekeeper Users found."
msgstr "Aucun utilisateur Gatekeeper trouvé."
-#: templates/gatekeeper/gatekeeper_list.html:111
+#: templates/gatekeeper/gatekeeper_list.html:112
msgid "Add Group"
msgstr "Ajouter un groupe"
-#: templates/gatekeeper/gatekeeper_list.html:147
+#: templates/gatekeeper/gatekeeper_list.html:148
msgid "No Gatekeeper Groups found."
msgstr "Aucun groupe Gatekeeper trouvé."
-#: templates/gatekeeper/gatekeeper_list.html:156
+#: templates/gatekeeper/gatekeeper_list.html:157
msgid "Add Auth Method"
msgstr "Ajouter une méthode d'authentification"
-#: templates/gatekeeper/gatekeeper_list.html:192
+#: templates/gatekeeper/gatekeeper_list.html:193
msgid "No Authentication Methods found."
msgstr "Aucune méthode d'authentification trouvée."
-#: templates/gatekeeper/gatekeeper_list.html:212
+#: templates/gatekeeper/gatekeeper_list.html:213
msgid "Identity"
msgstr "Identité"
-#: templates/gatekeeper/gatekeeper_list.html:213
-#: templates/gatekeeper/gatekeeper_list.html:275
+#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/gatekeeper/gatekeeper_list.html:276
msgid "Auth Method"
msgstr "Méthode d'authentification"
-#: templates/gatekeeper/gatekeeper_list.html:257
+#: templates/gatekeeper/gatekeeper_list.html:258
msgid "No Allowed Emails or Domains found."
msgstr "Aucun e-mail ou domaine autorisé trouvé."
-#: templates/gatekeeper/gatekeeper_list.html:276
+#: templates/gatekeeper/gatekeeper_list.html:277
msgid "Manage"
msgstr "Gérer"
-#: templates/gatekeeper/gatekeeper_list.html:309
+#: templates/gatekeeper/gatekeeper_list.html:310
msgid "No IP Addresses found."
msgstr "Aucune adresse IP trouvée."
@@ -3528,6 +3685,10 @@ msgstr "Supprimer le peer"
msgid "Please type \\\"delete\\\" to remove peer configuration."
msgstr "Tapez \\\"delete\\\" pour supprimer la configuration du peer."
+#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
+msgid "Display Name"
+msgstr "Nom à afficher"
+
#: templates/wireguard/wireguard_manage_server.html:27
msgid ""
"\n"
@@ -4521,5 +4682,26 @@ msgstr ""
msgid "No interfaces found|No WireGuard interfaces were found to process."
msgstr "Aucune interface trouvée | Aucune interface WireGuard à traiter."
+#~ msgid "This is a reserved system name."
+#~ msgstr "Il s'agit d'un nom de système réservé."
+
+#~ msgid ""
+#~ "TOTP must be combined with a Local Password or OpenID Connect "
+#~ "authentication method."
+#~ msgstr ""
+#~ "Le TOTP doit être combiné avec une méthode d'authentification par Mot de "
+#~ "passe local ou OpenID Connect."
+
+#~ msgid "Route identifier, used in export (e.g.: public_area)"
+#~ msgstr ""
+#~ "Identifiant d'itinéraire, utilisé dans l'exportation (ex: public_area)"
+
+#~ msgid ""
+#~ "Caddy is not active. Configuration files were exported for debugging "
+#~ "purposes."
+#~ msgstr ""
+#~ "Caddy n'est pas actif. Les fichiers de configuration ont été exportés à "
+#~ "des fins de débogage."
+
#~ msgid "Global TOTP Before Authentication"
#~ msgstr "TOTP global avant l'authentification"
diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo
index 37e6e5d..3df1ff5 100644
Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ
diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po
index 6243e99..f85ab0d 100644
--- a/locale/pt_BR/LC_MESSAGES/django.po
+++ b/locale/pt_BR/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-15 17:20-0300\n"
+"POT-Creation-Date: 2026-03-18 10:58-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -33,17 +33,17 @@ msgstr "Voltar"
#: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129
#: routing_templates/forms.py:37
-#: templates/app_gateway/app_gateway_list.html:158
-#: templates/app_gateway/application_details.html:75
-#: templates/app_gateway/application_details.html:125
+#: templates/app_gateway/app_gateway_list.html:166
+#: templates/app_gateway/application_details.html:103
+#: templates/app_gateway/application_details.html:154
#: templates/firewall/manage_firewall_rule.html:382
#: templates/firewall/manage_redirect_rule.html:86
-#: templates/gatekeeper/gatekeeper_list.html:93
-#: templates/gatekeeper/gatekeeper_list.html:136
-#: templates/gatekeeper/gatekeeper_list.html:181
-#: templates/gatekeeper/gatekeeper_list.html:229
-#: templates/gatekeeper/gatekeeper_list.html:246
-#: templates/gatekeeper/gatekeeper_list.html:298
+#: templates/gatekeeper/gatekeeper_list.html:94
+#: templates/gatekeeper/gatekeeper_list.html:137
+#: templates/gatekeeper/gatekeeper_list.html:182
+#: templates/gatekeeper/gatekeeper_list.html:230
+#: templates/gatekeeper/gatekeeper_list.html:247
+#: templates/gatekeeper/gatekeeper_list.html:299
#: templates/scheduler/scheduleprofile_form.html:127
#: templates/scheduler/scheduleprofile_list.html:29
#: templates/wireguard/peer_list/peer_preview_modal.html:109
@@ -64,12 +64,12 @@ msgstr ""
"Tem certeza de que deseja regenerar o token? O token antigo parará de "
"funcionar imediatamente."
-#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92
-#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237
-#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124
-#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70
-#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299
-#: gatekeeper/forms.py:329 gatekeeper/forms.py:360
+#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99
+#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241
+#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124
+#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71
+#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362
+#: gatekeeper/forms.py:392 gatekeeper/forms.py:423
#: routing_templates/forms.py:71 scheduler/forms.py:102
#: templates/firewall/manage_firewall_rule.html:379
#: templates/firewall/manage_firewall_settings.html:59
@@ -82,14 +82,14 @@ msgstr ""
msgid "Save"
msgstr "Salvar"
-#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106
-#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174
+#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113
+#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188
#: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47
-#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58
-#: templates/app_gateway/app_gateway_list.html:138
-#: templates/app_gateway/application_details.html:26
+#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66
+#: templates/app_gateway/app_gateway_list.html:146
+#: templates/app_gateway/application_details.html:35
#: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68
-#: templates/gatekeeper/gatekeeper_list.html:165
+#: templates/gatekeeper/gatekeeper_list.html:166
#: templates/routing_templates/list.html:8
#: templates/scheduler/scheduleprofile_list.html:13
#: templates/user_manager/peer_group_list.html:8
@@ -127,16 +127,16 @@ msgid "Enabled"
msgstr "Habilitado"
#: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106
-#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68
-#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170
-#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267
-#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354
-#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18
-#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23
-#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121
-#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222
-#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334
-#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436
+#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83
+#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196
+#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297
+#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384
+#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18
+#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25
+#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125
+#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226
+#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350
+#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452
#: templates/access_denied.html:9
msgid "Access Denied"
msgstr "Acesso Negado"
@@ -206,20 +206,19 @@ msgstr "Tem certeza de que deseja excluir a Chave de API \"%(name)s\"?"
msgid "API Documentation"
msgstr "Documentação da API"
-#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27
-#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
-msgid "Display Name"
-msgstr "Nome de Exibição"
-
-#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59
-#: templates/app_gateway/application_details.html:28
+#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67
+#: templates/app_gateway/application_details.html:36
msgid "Upstream"
msgstr "Upstream"
-#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137
-#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279
-#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213
-#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361
+#: app_gateway/forms.py:20
+msgid "Allow invalid/self-signed certificate"
+msgstr ""
+
+#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145
+#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284
+#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240
+#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424
#: scheduler/forms.py:103
#: templates/app_gateway/access_policy_type_select.html:50
#: templates/generic_delete_confirmation.html:19
@@ -227,59 +226,65 @@ msgstr "Upstream"
msgid "Cancel"
msgstr "Cancelar"
-#: app_gateway/forms.py:54
-msgid "This is a reserved system name."
-msgstr "Este é um nome de sistema reservado."
-
-#: app_gateway/forms.py:58
+#: app_gateway/forms.py:55
msgid "This upstream is reserved by the system."
msgstr "Este upstream é reservado pelo sistema."
-#: app_gateway/forms.py:61
+#: app_gateway/forms.py:58
msgid "Upstream URL cannot contain spaces."
msgstr "URL de Upstream não pode conter espaços."
-#: app_gateway/forms.py:67
+#: app_gateway/forms.py:64
msgid "Enter a valid upstream URL starting with http:// or https://"
msgstr "Insira uma URL de upstream válida começando com http:// ou https://"
-#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65
-#: templates/app_gateway/app_gateway_list.html:101
-#: templates/app_gateway/application_details.html:61
+#: app_gateway/forms.py:66
+msgid ""
+"Upstream must be a bare host address with no path, query or fragment. Use "
+"http://host or http://host:port"
+msgstr ""
+
+#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65
+#: templates/app_gateway/app_gateway_list.html:109
+#: templates/app_gateway/application_details.html:75
#: templates/dns/static_host_list.html:17
#: templates/wireguard/server_detail.html:39
msgid "Hostname"
msgstr "Endereço do Host"
-#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139
+#: app_gateway/forms.py:84
+msgid "Hostname contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147
msgid "Policy Type"
msgstr "Tipo de Política"
-#: app_gateway/forms.py:108
+#: app_gateway/forms.py:115
msgid "Allowed Groups"
msgstr "Grupos Permitidos"
-#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12
+#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13
msgid "Authentication Methods"
msgstr "Métodos de Autenticação"
-#: app_gateway/forms.py:188
+#: app_gateway/forms.py:196
msgid "Cannot select more than one Local Password authentication method."
msgstr ""
"Não é possível selecionar mais de um método de autenticação por Senha Local."
-#: app_gateway/forms.py:192
+#: app_gateway/forms.py:200
msgid ""
"Cannot select more than one OpenID Connect (OIDC) authentication method."
msgstr ""
"Não é possível selecionar mais de um método de autenticação OpenID Connect "
"(OIDC)."
-#: app_gateway/forms.py:196
+#: app_gateway/forms.py:204
msgid "Cannot select more than one TOTP authentication method."
msgstr "Não é possível selecionar mais de um método de autenticação TOTP."
-#: app_gateway/forms.py:200
+#: app_gateway/forms.py:208
msgid ""
"Cannot select both Local Password and OpenID Connect (OIDC) authentication "
"methods."
@@ -287,15 +292,7 @@ msgstr ""
"Não é possível selecionar simultaneamente os métodos de autenticação por "
"Senha Local e OpenID Connect (OIDC)."
-#: app_gateway/forms.py:204
-msgid ""
-"TOTP must be combined with a Local Password or OpenID Connect authentication "
-"method."
-msgstr ""
-"O TOTP deve ser combinado com um método de autenticação de Senha Local ou "
-"OpenID Connect."
-
-#: app_gateway/forms.py:208
+#: app_gateway/forms.py:212
msgid ""
"At least one user group must be selected when using Local Password "
"authentication."
@@ -303,74 +300,101 @@ msgstr ""
"Pelo menos um grupo de usuários deve ser selecionado ao usar a autenticação "
"por Senha Local."
-#: app_gateway/forms.py:212
+#: app_gateway/forms.py:216
msgid "User groups can only be used with Local Password authentication."
msgstr ""
"Grupos de usuários só podem ser usados com autenticação por Senha Local."
-#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62
-#: templates/app_gateway/application_details.html:31
+#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70
+#: templates/app_gateway/application_details.html:39
#: templates/firewall/firewall_nav_tabs.html:15
msgid "Default Policy"
msgstr "Política Padrão"
-#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105
+#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134
msgid "Route Name"
msgstr "Nome da Rota"
-#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106
+#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135
msgid "Path Prefix"
msgstr "Prefixo do Caminho"
-#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107
+#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136
msgid "Policy"
msgstr "Política"
-#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108
+#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137
msgid "Order"
msgstr "Ordem"
-#: app_gateway/models.py:12
+#: app_gateway/forms.py:299
+#, fuzzy
+#| msgid "Invite URL must start with 'https://'."
+msgid "Path prefix must start with /."
+msgstr "Endereço do convite deve começar com 'https://'."
+
+#: app_gateway/forms.py:301
+#, fuzzy
+#| msgid "Upstream URL cannot contain spaces."
+msgid "Path prefix cannot contain spaces."
+msgstr "URL de Upstream não pode conter espaços."
+
+#: app_gateway/forms.py:303
+msgid "Path prefix contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:308
+#, fuzzy
+#| msgid "This upstream is reserved by the system."
+msgid "This path prefix is reserved by the system."
+msgstr "Este upstream é reservado pelo sistema."
+
+#: app_gateway/models.py:14
msgid "Upstream address, e.g.: http://10.188.18.27:3000"
msgstr "Endereço upstream, ex: http://10.188.18.27:3000"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:15
+msgid "Allow invalid or self-signed TLS certificates from the upstream"
+msgstr ""
+
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:19
msgid "Public"
msgstr "Público"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:30
msgid "Protected"
msgstr "Protegido"
-#: app_gateway/models.py:45 gatekeeper/models.py:108
+#: app_gateway/models.py:53 gatekeeper/models.py:142
#: templates/app_gateway/access_policy_type_select.html:41
-#: templates/gatekeeper/gatekeeper_list.html:288
+#: templates/gatekeeper/gatekeeper_list.html:289
msgid "Deny"
msgstr "Negar"
-#: app_gateway/models.py:80
-msgid "Route identifier, used in export (e.g.: public_area)"
-msgstr "Identificador da rota, usado na exportação (ex: public_area)"
-
-#: app_gateway/views.py:60
+#: app_gateway/views.py:75
msgid "Application Details"
msgstr "Detalhes da Aplicação"
-#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15
+#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204
+msgid "The WireGuard WebAdmin application cannot be modified."
+msgstr ""
+
+#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16
+#: templates/app_gateway/application_details.html:23
msgid "Edit Application"
msgstr "Editar Aplicação"
-#: app_gateway/views.py:77
+#: app_gateway/views.py:95
msgid "Create Application"
msgstr "Criar Aplicação"
-#: app_gateway/views.py:84
+#: app_gateway/views.py:102
msgid "Application saved successfully."
msgstr "Aplicação salva com sucesso."
-#: app_gateway/views.py:89
+#: app_gateway/views.py:107
msgid ""
"\n"
" Application
\n"
@@ -404,62 +428,67 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:120
+#: app_gateway/views.py:137
+msgid "The WireGuard WebAdmin application cannot be deleted."
+msgstr ""
+
+#: app_gateway/views.py:142
msgid "Application deleted successfully."
msgstr "Aplicação excluída com sucesso."
-#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18
+#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19
+#: templates/app_gateway/application_details.html:26
msgid "Delete Application"
msgstr "Excluir Aplicação"
-#: app_gateway/views.py:127
+#: app_gateway/views.py:149
#, python-format
msgid "Are you sure you want to delete the application \"%(name)s\"?"
msgstr "Tem certeza de que deseja excluir a aplicação \"%(name)s\"?"
-#: app_gateway/views.py:143
+#: app_gateway/views.py:165
msgid "Edit Application Host"
msgstr "Editar Host da Aplicação"
-#: app_gateway/views.py:147
+#: app_gateway/views.py:169
msgid "Add Application Host"
msgstr "Adicionar Host da Aplicação"
-#: app_gateway/views.py:156
+#: app_gateway/views.py:182
msgid "Application Host saved successfully."
msgstr "Host da Aplicação salvo com sucesso."
-#: app_gateway/views.py:179
+#: app_gateway/views.py:209
msgid "Application Host deleted successfully."
msgstr "Host da Aplicação excluído com sucesso."
-#: app_gateway/views.py:184
+#: app_gateway/views.py:214
msgid "Delete Application Host"
msgstr "Excluir Host da Aplicação"
-#: app_gateway/views.py:186
+#: app_gateway/views.py:216
#, python-format
msgid "Are you sure you want to delete the host \"%(hostname)s\"?"
msgstr "Tem certeza de que deseja excluir o host \"%(hostname)s\"?"
-#: app_gateway/views.py:197
+#: app_gateway/views.py:227
#: templates/app_gateway/access_policy_type_select.html:9
msgid "Select Access Policy Type"
msgstr "Selecionar Tipo de Política de Acesso"
-#: app_gateway/views.py:212
+#: app_gateway/views.py:242
msgid "Edit Access Policy"
msgstr "Editar Política de Acesso"
-#: app_gateway/views.py:216
+#: app_gateway/views.py:246
msgid "Create Access Policy"
msgstr "Criar Política de Acesso"
-#: app_gateway/views.py:223
+#: app_gateway/views.py:253
msgid "Access Policy saved successfully."
msgstr "Política de Acesso salva com sucesso."
-#: app_gateway/views.py:229
+#: app_gateway/views.py:259
msgid ""
"\n"
" Public Policy
\n"
@@ -473,7 +502,7 @@ msgstr ""
"exigir nenhuma autenticação.\n"
" "
-#: app_gateway/views.py:237
+#: app_gateway/views.py:267
msgid ""
"\n"
" Deny Policy
\n"
@@ -486,7 +515,7 @@ msgstr ""
"correspondentes.\n"
" "
-#: app_gateway/views.py:245
+#: app_gateway/views.py:275
msgid ""
"\n"
" Protected Policy
\n"
@@ -516,11 +545,11 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:276
+#: app_gateway/views.py:306
msgid "Access Policy deleted successfully."
msgstr "Política de Acesso excluída com sucesso."
-#: app_gateway/views.py:278
+#: app_gateway/views.py:308
msgid ""
"Cannot delete this Access Policy because it is currently in use by an "
"Application Route or Application Default Policy."
@@ -528,53 +557,53 @@ msgstr ""
"Não é possível excluir esta Política de Acesso porque ela está em uso por "
"uma Rota de Aplicativo ou Política Padrão de Aplicativo."
-#: app_gateway/views.py:283
+#: app_gateway/views.py:313
msgid "Delete Access Policy"
msgstr "Excluir Política de Acesso"
-#: app_gateway/views.py:285
+#: app_gateway/views.py:315
#, python-format
msgid "Are you sure you want to delete the access policy \"%(name)s\"?"
msgstr "Tem certeza de que deseja excluir a política de acesso \"%(name)s\"?"
-#: app_gateway/views.py:301
+#: app_gateway/views.py:331
msgid "Edit Application Default Policy"
msgstr "Editar Política Padrão da Aplicação"
-#: app_gateway/views.py:305
+#: app_gateway/views.py:335
msgid "Set Application Default Policy"
msgstr "Configurar Política Padrão da Aplicação"
-#: app_gateway/views.py:314
+#: app_gateway/views.py:344
msgid "Application Default Policy saved successfully."
msgstr "Política Padrão da Aplicação salva com sucesso."
-#: app_gateway/views.py:337
+#: app_gateway/views.py:367
msgid "Application Default Policy deleted successfully."
msgstr "Política Padrão da Aplicação excluída com sucesso."
-#: app_gateway/views.py:342
+#: app_gateway/views.py:372
msgid "Delete Application Default Policy"
msgstr "Excluir Política Padrão da Aplicação"
-#: app_gateway/views.py:344
+#: app_gateway/views.py:374
#, python-format
msgid "Are you sure you want to remove the default policy for \"%(name)s\"?"
msgstr "Tem certeza de que deseja remover a política padrão para \"%(name)s\"?"
-#: app_gateway/views.py:362
+#: app_gateway/views.py:392
msgid "Edit Application Route"
msgstr "Editar Rota da Aplicação"
-#: app_gateway/views.py:366
+#: app_gateway/views.py:396
msgid "Add Application Route"
msgstr "Adicionar Rota da Aplicação"
-#: app_gateway/views.py:375
+#: app_gateway/views.py:405
msgid "Application Route saved successfully."
msgstr "Rota da Aplicação salva com sucesso."
-#: app_gateway/views.py:380
+#: app_gateway/views.py:410
msgid ""
"\n"
" Application Route
\n"
@@ -614,42 +643,41 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:413
+#: app_gateway/views.py:443
msgid "Application Route deleted successfully."
msgstr "Rota da Aplicação excluída com sucesso."
-#: app_gateway/views.py:418
+#: app_gateway/views.py:448
msgid "Delete Application Route"
msgstr "Excluir Rota da Aplicação"
-#: app_gateway/views.py:420
+#: app_gateway/views.py:450
#, python-format
msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?"
msgstr "Tem certeza de que deseja excluir a rota \"%(name)s\" (%(path)s)?"
-#: app_gateway/views.py:443
+#: app_gateway/views.py:468
+msgid ""
+"Configuration export is not available because Caddy is not enabled. To use "
+"App Gateway and Gatekeeper, start the application using docker-compose-"
+"caddy.yml."
+msgstr ""
+
+#: app_gateway/views.py:478
msgid "Configuration exported successfully."
msgstr "Configuração exportada com sucesso."
-#: app_gateway/views.py:445
-msgid ""
-"Caddy is not active. Configuration files were exported for debugging "
-"purposes."
-msgstr ""
-"O Caddy não está ativo. Os arquivos de configuração foram exportados para "
-"fins de depuração."
-
#: cluster/forms.py:20
msgid "IP Lock"
msgstr "Bloqueio de IP"
-#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271
+#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315
#: 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/gatekeeper/gatekeeper_list.html:272
+#: templates/gatekeeper/gatekeeper_list.html:273
#: templates/wireguard/wireguard_status.html:45
msgid "IP Address"
msgstr "Endereço IP"
@@ -924,7 +952,7 @@ msgstr "DNS Estático"
msgid "Invalid hostname."
msgstr "Nome de host inválido."
-#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274
+#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318
#: templates/api_v2/api_documentation.html:51
#: templates/dns/static_host_list.html:69
#: templates/firewall/manage_redirect_rule.html:18
@@ -1259,13 +1287,13 @@ msgstr "Gerenciar Configurações de Firewall"
msgid "Firewall settings saved successfully"
msgstr "Configurações de Firewall salvas com sucesso"
-#: gatekeeper/forms.py:17 templates/accounts/login.html:23
+#: gatekeeper/forms.py:18 templates/accounts/login.html:23
#: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14
#: vpn_invite/forms.py:282
msgid "Password"
msgstr "Senha"
-#: gatekeeper/forms.py:20
+#: gatekeeper/forms.py:21
msgid ""
"Minimum 8 characters, with at least one uppercase letter, one lowercase "
"letter, and one number."
@@ -1273,15 +1301,15 @@ msgstr ""
"Mínimo de 8 caracteres, com pelo menos uma letra maiúscula, uma letra "
"minúscula e um número."
-#: gatekeeper/forms.py:23
+#: gatekeeper/forms.py:24
msgid "Confirm Password"
msgstr "Confirmar Senha"
-#: gatekeeper/forms.py:28 gatekeeper/forms.py:161
+#: gatekeeper/forms.py:29 gatekeeper/forms.py:163
msgid "TOTP Validation PIN"
msgstr "PIN de Validação TOTP"
-#: gatekeeper/forms.py:31 gatekeeper/forms.py:164
+#: gatekeeper/forms.py:32 gatekeeper/forms.py:166
msgid ""
"Enter a 6-digit PIN generated by your authenticator app to validate the "
"secret."
@@ -1289,184 +1317,218 @@ msgstr ""
"Insira um PIN de 6 dígitos gerado pelo seu aplicativo autenticador para "
"validar o segredo."
-#: gatekeeper/forms.py:38 templates/accounts/login.html:14
-#: templates/gatekeeper/gatekeeper_list.html:61
+#: gatekeeper/forms.py:39 templates/accounts/login.html:14
+#: templates/gatekeeper/gatekeeper_list.html:62
#: templates/user_manager/list.html:8 user_manager/forms.py:13
#: vpn_invite/forms.py:281
msgid "Username"
msgstr "Usuário"
-#: gatekeeper/forms.py:39 gatekeeper/forms.py:344
-#: templates/gatekeeper/gatekeeper_list.html:62
-#: templates/gatekeeper/gatekeeper_list.html:220
+#: gatekeeper/forms.py:40 gatekeeper/forms.py:407
+#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:221
#: templates/wireguard/peer_list/peer_preview_modal.html:103
msgid "Email"
msgstr "Email"
-#: gatekeeper/forms.py:40
+#: gatekeeper/forms.py:41
msgid "TOTP Secret"
msgstr "Segredo TOTP"
-#: gatekeeper/forms.py:87
+#: gatekeeper/forms.py:88
msgid "Password is required."
msgstr "A senha é obrigatória."
-#: gatekeeper/forms.py:90 user_manager/forms.py:127
+#: gatekeeper/forms.py:91 user_manager/forms.py:127
msgid "Password must be at least 8 characters long."
msgstr "Senha deve ter pelo menos 8 caracteres."
-#: gatekeeper/forms.py:92
+#: gatekeeper/forms.py:93
msgid "Password must contain at least one lowercase letter."
msgstr "A senha deve conter pelo menos uma letra minúscula."
-#: gatekeeper/forms.py:94
+#: gatekeeper/forms.py:95
msgid "Password must contain at least one uppercase letter."
msgstr "A senha deve conter pelo menos uma letra maiúscula."
-#: gatekeeper/forms.py:96
+#: gatekeeper/forms.py:97
msgid "Password must contain at least one number."
msgstr "A senha deve conter pelo menos um número."
-#: gatekeeper/forms.py:98
+#: gatekeeper/forms.py:99
msgid "Passwords do not match."
msgstr "As senhas não coincidem."
-#: gatekeeper/forms.py:103 gatekeeper/forms.py:249
+#: gatekeeper/forms.py:104 gatekeeper/forms.py:276
msgid "Please provide a PIN to validate the TOTP secret."
msgstr "Por favor, forneça um PIN para validar o segredo TOTP."
-#: gatekeeper/forms.py:108 gatekeeper/forms.py:254
+#: gatekeeper/forms.py:109 gatekeeper/forms.py:281
msgid "Invalid TOTP PIN."
msgstr "PIN TOTP inválido."
-#: gatekeeper/forms.py:110 gatekeeper/forms.py:256
+#: gatekeeper/forms.py:111 gatekeeper/forms.py:283
msgid "Invalid TOTP secret format. Must be a valid Base32 string."
msgstr "Formato de segredo TOTP inválido. Deve ser uma string Base32 válida."
-#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120
+#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
msgid "Group Name"
msgstr "Nome do Grupo"
-#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
+#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122
msgid "Members"
msgstr "Membros"
+#: gatekeeper/forms.py:169
+#, fuzzy
+#| msgid "Expiration"
+msgid "Session Expiration"
+msgstr "Expira em"
+
#: gatekeeper/forms.py:175
+msgid "Unit"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Hour(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Day(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:189
msgid "Authentication Type"
msgstr "Tipo de Autenticação"
-#: gatekeeper/forms.py:176
+#: gatekeeper/forms.py:190
msgid "Global TOTP Secret"
msgstr "Segredo TOTP Global"
-#: gatekeeper/forms.py:177
+#: gatekeeper/forms.py:191
msgid "OIDC Provider URL"
msgstr "URL do Provedor OIDC"
-#: gatekeeper/forms.py:178
+#: gatekeeper/forms.py:192
msgid "OIDC Client ID"
msgstr "ID do Cliente OIDC"
-#: gatekeeper/forms.py:179
+#: gatekeeper/forms.py:193
msgid "OIDC Client Secret"
msgstr "Segredo do Cliente OIDC"
-#: gatekeeper/forms.py:230
+#: gatekeeper/forms.py:257
msgid "TOTP secret must be empty for Local Password authentication."
msgstr "O segredo TOTP deve estar vazio para autenticação por Senha Local."
-#: gatekeeper/forms.py:232
+#: gatekeeper/forms.py:259
msgid "TOTP validation PIN must be empty for Local Password authentication."
msgstr ""
"O PIN de validação TOTP deve estar vazio para autenticação por Senha Local."
-#: gatekeeper/forms.py:234
+#: gatekeeper/forms.py:261
msgid "OIDC fields must be empty for Local Password authentication."
msgstr "Os campos OIDC devem estar vazios para autenticação por Senha Local."
-#: gatekeeper/forms.py:240
+#: gatekeeper/forms.py:267
msgid "Only one Local Password authentication method can be configured."
msgstr "Apenas um método de autenticação por Senha Local pode ser configurado."
-#: gatekeeper/forms.py:243
+#: gatekeeper/forms.py:270
msgid "OIDC fields must be empty for TOTP authentication."
msgstr "Os campos OIDC devem estar vazios para autenticação por TOTP."
-#: gatekeeper/forms.py:245
+#: gatekeeper/forms.py:272
msgid "TOTP secret is required for TOTP authentication."
msgstr "O segredo TOTP é obrigatório para autenticação por TOTP."
-#: gatekeeper/forms.py:259
+#: gatekeeper/forms.py:285
+msgid ""
+"OIDC authentication is temporarily unavailable and will be available soon."
+msgstr ""
+
+#: gatekeeper/forms.py:287
msgid "TOTP secret must be empty for OIDC authentication."
msgstr "O segredo TOTP deve estar vazio para autenticação por OIDC."
-#: gatekeeper/forms.py:261
+#: gatekeeper/forms.py:289
msgid "TOTP validation PIN must be empty for OIDC authentication."
msgstr "O PIN de validação TOTP deve estar vazio para autenticação por OIDC."
-#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343
+#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406
msgid "Authentication Method"
msgstr "Método de Autenticação"
-#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273
+#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274
msgid "Prefix Length"
msgstr "Comprimento do Prefixo"
-#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47
+#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47
#: templates/firewall/manage_firewall_rule.html:360
-#: templates/gatekeeper/gatekeeper_list.html:274
+#: templates/gatekeeper/gatekeeper_list.html:275
msgid "Action"
msgstr "Ação"
-#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237
+#: gatekeeper/forms.py:332
+#, python-format
+msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d."
+msgstr ""
+
+#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238
msgid "Domain"
msgstr "Domínio"
-#: gatekeeper/models.py:10
+#: gatekeeper/models.py:27
msgid "Local Password"
msgstr "Senha Local"
-#: gatekeeper/models.py:11
+#: gatekeeper/models.py:28
msgid "One-Time Password (TOTP)"
msgstr "Senha de Uso Único (TOTP)"
-#: gatekeeper/models.py:12
+#: gatekeeper/models.py:29
msgid "OpenID Connect (OIDC)"
msgstr "OpenID Connect (OIDC)"
-#: gatekeeper/models.py:13
+#: gatekeeper/models.py:30
msgid "IP Address List"
msgstr "Lista de Endereços IP"
-#: gatekeeper/models.py:17
+#: gatekeeper/models.py:34
msgid "Shared/global TOTP secret key"
msgstr "Chave secreta TOTP compartilhada/global"
-#: gatekeeper/models.py:68
+#: gatekeeper/models.py:39
+#, fuzzy
+#| msgid "Expiration (minutes)"
+msgid "Session expiration time in minutes"
+msgstr "Expira em (minutos)"
+
+#: gatekeeper/models.py:96
msgid "Password for local authentication (leave blank if not using)"
msgstr "Senha para autenticação local (deixe em branco se não estiver usando)"
-#: gatekeeper/models.py:69
+#: gatekeeper/models.py:97
msgid "Per-user TOTP secret key"
msgstr "Chave secreta TOTP por usuário"
-#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286
+#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287
msgid "Allow"
msgstr "Permitir"
-#: gatekeeper/views.py:54
+#: gatekeeper/views.py:58
msgid "Edit Gatekeeper User"
msgstr "Editar Usuário Gatekeeper"
-#: gatekeeper/views.py:57
+#: gatekeeper/views.py:61
msgid "Create Gatekeeper User"
msgstr "Criar Usuário Gatekeeper"
-#: gatekeeper/views.py:64
+#: gatekeeper/views.py:68
msgid "Gatekeeper User saved successfully."
msgstr "Usuário Gatekeeper salvo com sucesso."
-#: gatekeeper/views.py:69
+#: gatekeeper/views.py:73
msgid ""
"\n"
" Gatekeeper User
\n"
@@ -1490,17 +1552,18 @@ msgid ""
msgstr ""
"\n"
" Usuário do Gatekeeper
\n"
-" Usuários do Gatekeeper são usados para autenticação em aplicações protegidas "
-"gerenciadas por este gateway.
\n"
+" Usuários do Gatekeeper são usados para autenticação em aplicações "
+"protegidas gerenciadas por este gateway.
\n"
"\n"
" Senha
\n"
-" Obrigatório ao criar um usuário. Ao editar, deixe ambos os campos de senha "
-"em branco para manter a senha atual.\n"
-" As senhas são armazenadas usando hash Argon2id.
\n"
+" Obrigatório ao criar um usuário. Ao editar, deixe ambos os campos "
+"de senha em branco para manter a senha atual.\n"
+" As senhas são armazenadas usando hash Argon2id."
+"p>\n"
"\n"
"
Segredo TOTP
\n"
-" Segredo TOTP opcional por usuário. Quando definido, este usuário irá "
-"se autenticar usando seu próprio segredo em vez do\n"
+"
Segredo TOTP opcional por usuário. Quando definido, este usuário "
+"irá se autenticar usando seu próprio segredo em vez do\n"
" segredo TOTP global configurado no Método de Autenticação. Use os "
"botões abaixo do campo para gerar um\n"
" segredo aleatório e ler o código QR com seu aplicativo autenticador. "
@@ -1508,57 +1571,77 @@ msgstr ""
" 6 dígitos antes de salvar.
\n"
" "
-#: gatekeeper/views.py:106
+#: gatekeeper/views.py:110
msgid "Gatekeeper User deleted successfully."
msgstr "Usuário Gatekeeper excluído com sucesso."
-#: gatekeeper/views.py:111
+#: gatekeeper/views.py:115
msgid "Delete Gatekeeper User"
msgstr "Excluir Usuário Gatekeeper"
-#: gatekeeper/views.py:113
+#: gatekeeper/views.py:117
#, python-format
msgid "Are you sure you want to delete the user \"%(username)s\"?"
msgstr "Tem certeza de que deseja excluir o usuário \"%(username)s\"?"
-#: gatekeeper/views.py:127
+#: gatekeeper/views.py:131
msgid "Edit Gatekeeper Group"
msgstr "Editar Grupo Gatekeeper"
-#: gatekeeper/views.py:130
+#: gatekeeper/views.py:134
msgid "Create Gatekeeper Group"
msgstr "Criar Grupo Gatekeeper"
-#: gatekeeper/views.py:137
+#: gatekeeper/views.py:141
msgid "Gatekeeper Group saved successfully."
msgstr "Grupo Gatekeeper salvo com sucesso."
-#: gatekeeper/views.py:159
+#: gatekeeper/views.py:163
msgid "Gatekeeper Group deleted successfully."
msgstr "Grupo Gatekeeper excluído com sucesso."
-#: gatekeeper/views.py:164
+#: gatekeeper/views.py:168
msgid "Delete Gatekeeper Group"
msgstr "Excluir Grupo Gatekeeper"
-#: gatekeeper/views.py:166
+#: gatekeeper/views.py:170
#, python-format
msgid "Are you sure you want to delete the group \"%(name)s\"?"
msgstr "Tem certeza de que deseja excluir o grupo \"%(name)s\"?"
-#: gatekeeper/views.py:180
+#: gatekeeper/views.py:184
msgid "Edit Authentication Method"
msgstr "Editar Método de Autenticação"
-#: gatekeeper/views.py:183
+#: gatekeeper/views.py:187
msgid "Create Authentication Method"
msgstr "Criar Método de Autenticação"
-#: gatekeeper/views.py:190
+#: gatekeeper/views.py:194
msgid "Authentication Method saved successfully."
msgstr "Método de Autenticação salvo com sucesso."
-#: gatekeeper/views.py:195
+#: gatekeeper/views.py:199
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " Authentication Types
\n"
+#| " Select how users will authenticate through this method.
\n"
+#| " \n"
+#| " Local Password
\n"
+#| " Users will authenticate using a standard username and password "
+#| "stored locally. Only one of this type can be created.
\n"
+#| " \n"
+#| " OIDC (OpenID Connect)
\n"
+#| " Users will authenticate via an external identity provider "
+#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, "
+#| "and Client Secret.
\n"
+#| " \n"
+#| " TOTP (Time-Based One-Time Password)
\n"
+#| " Users will need to enter a rotating token from an "
+#| "authenticator app. If a user does not have a personal TOTP configured, "
+#| "the Global TOTP Secret will be used instead.
\n"
+#| " "
msgid ""
"\n"
" Authentication Types
\n"
@@ -1570,8 +1653,8 @@ msgid ""
" \n"
" OIDC (OpenID Connect)
\n"
" Users will authenticate via an external identity provider (like "
-"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client "
-"Secret.
\n"
+"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret."
+"p>\n"
" \n"
" TOTP (Time-Based One-Time Password)
\n"
" Users will need to enter a rotating token from an authenticator "
@@ -1599,84 +1682,91 @@ msgstr ""
"Segredo TOTP Global será usado em seu lugar.
\n"
" "
-#: gatekeeper/views.py:230
+#: gatekeeper/views.py:237
+#, python-format
+msgid ""
+"Cannot delete authentication method \"%(method)s\" because it is used by the "
+"following policies: %(policies)s."
+msgstr ""
+
+#: gatekeeper/views.py:243
msgid "Authentication Method deleted successfully."
msgstr "Método de Autenticação excluído com sucesso."
-#: gatekeeper/views.py:235
+#: gatekeeper/views.py:248
msgid "Delete Authentication Method"
msgstr "Excluir Método de Autenticação"
-#: gatekeeper/views.py:237
+#: gatekeeper/views.py:250
#, python-format
msgid "Are you sure you want to delete the authentication method \"%(name)s\"?"
msgstr ""
"Tem certeza de que deseja excluir o método de autenticação \"%(name)s\"?"
-#: gatekeeper/views.py:287
+#: gatekeeper/views.py:303
msgid "Edit Allowed Domain"
msgstr "Editar Domínio Permitido"
-#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202
+#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203
msgid "Add Allowed Domain"
msgstr "Adicionar Domínio Permitido"
-#: gatekeeper/views.py:297
+#: gatekeeper/views.py:313
msgid "Allowed Domain saved successfully."
msgstr "Domínio Permitido salvo com sucesso."
-#: gatekeeper/views.py:319
+#: gatekeeper/views.py:335
msgid "Allowed Domain deleted successfully."
msgstr "Domínio Permitido excluído com sucesso."
-#: gatekeeper/views.py:324
+#: gatekeeper/views.py:340
msgid "Delete Allowed Domain"
msgstr "Excluir Domínio Permitido"
-#: gatekeeper/views.py:326
+#: gatekeeper/views.py:342
#, python-format
msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?"
msgstr "Tem certeza de que deseja excluir o domínio permitido \"%(domain)s\"?"
-#: gatekeeper/views.py:340
+#: gatekeeper/views.py:356
msgid "Edit Allowed Email"
msgstr "Editar E-mail Permitido"
-#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199
+#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200
msgid "Add Allowed Email"
msgstr "Adicionar E-mail Permitido"
-#: gatekeeper/views.py:350
+#: gatekeeper/views.py:366
msgid "Allowed Email saved successfully."
msgstr "E-mail Permitido salvo com sucesso."
-#: gatekeeper/views.py:372
+#: gatekeeper/views.py:388
msgid "Allowed Email deleted successfully."
msgstr "E-mail Permitido excluído com sucesso."
-#: gatekeeper/views.py:377
+#: gatekeeper/views.py:393
msgid "Delete Allowed Email"
msgstr "Excluir E-mail Permitido"
-#: gatekeeper/views.py:379
+#: gatekeeper/views.py:395
#, python-format
msgid "Are you sure you want to delete the allowed email \"%(email)s\"?"
msgstr "Tem certeza de que deseja excluir o e-mail permitido \"%(email)s\"?"
-#: gatekeeper/views.py:393
+#: gatekeeper/views.py:409
msgid "Edit IP Address"
msgstr "Editar Endereço IP"
-#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263
+#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264
#: templates/wireguard/wireguard_manage_peer.html:171
msgid "Add IP Address"
msgstr "Adicionar IP"
-#: gatekeeper/views.py:403
+#: gatekeeper/views.py:419
msgid "IP Address saved successfully."
msgstr "Endereço IP salvo com sucesso."
-#: gatekeeper/views.py:408
+#: gatekeeper/views.py:424
msgid ""
"\n"
" IP Address List
\n"
@@ -1723,24 +1813,25 @@ msgstr ""
"\"Rede do Escritório\", \"Atacante Bloqueado\").\n"
" "
-#: gatekeeper/views.py:444
+#: gatekeeper/views.py:460
msgid "IP Address deleted successfully."
msgstr "Endereço IP excluído com sucesso."
-#: gatekeeper/views.py:449
+#: gatekeeper/views.py:465
msgid "Delete IP Address"
msgstr "Excluir Endereço IP"
-#: gatekeeper/views.py:451
+#: gatekeeper/views.py:467
#, python-format
msgid "Are you sure you want to delete the IP address \"%(address)s\"?"
msgstr "Tem certeza de que deseja excluir o endereço IP \"%(address)s\"?"
-#: intl_tools/forms.py:11 templates/accounts/login.html:36
+#: intl_tools/forms.py:11
msgid "Language"
msgstr "Idioma"
-#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14
+#: intl_tools/forms.py:24 templates/accounts/login.html:35
+#: templates/template_parts/base_navbar.html:19
msgid "Change Language"
msgstr "Alterar Idioma"
@@ -2077,6 +2168,11 @@ msgstr ""
msgid "Login"
msgstr "Acessar"
+#: templates/accounts/login.html:40
+#: templates/template_parts/base_navbar.html:14
+msgid "Toggle Dark Mode"
+msgstr ""
+
#: templates/accounts/logout.html:11
msgid "You have been successfully logged out."
msgstr "Você foi desconectado com sucesso."
@@ -2099,8 +2195,8 @@ msgid "In"
msgstr "Entrada"
#: templates/api_v2/api_documentation.html:49
-#: templates/gatekeeper/gatekeeper_list.html:166
-#: templates/gatekeeper/gatekeeper_list.html:211
+#: templates/gatekeeper/gatekeeper_list.html:167
+#: templates/gatekeeper/gatekeeper_list.html:212
#: templates/wireguard/apply_route_template.html:27
msgid "Type"
msgstr "Tipo"
@@ -2110,13 +2206,13 @@ msgid "Required"
msgstr "Obrigatório"
#: templates/api_v2/api_documentation.html:62
-#: templates/gatekeeper/gatekeeper_list.html:75
+#: templates/gatekeeper/gatekeeper_list.html:76
#: templates/scheduler/scheduleprofile_form.html:175
msgid "Yes"
msgstr "Sim"
#: templates/api_v2/api_documentation.html:64
-#: templates/gatekeeper/gatekeeper_list.html:77
+#: templates/gatekeeper/gatekeeper_list.html:78
#: templates/scheduler/scheduleprofile_form.html:177
msgid "No"
msgstr "Não"
@@ -2156,17 +2252,17 @@ msgid "Disabled"
msgstr "Desabilitado"
#: templates/api_v2/list.html:68
-#: templates/app_gateway/app_gateway_list.html:154
-#: templates/app_gateway/application_details.html:71
-#: templates/app_gateway/application_details.html:121
+#: templates/app_gateway/app_gateway_list.html:162
+#: templates/app_gateway/application_details.html:99
+#: templates/app_gateway/application_details.html:150
#: templates/cluster/workers_list.html:77
#: templates/dns/static_host_list.html:74
-#: templates/gatekeeper/gatekeeper_list.html:89
-#: templates/gatekeeper/gatekeeper_list.html:132
-#: templates/gatekeeper/gatekeeper_list.html:177
-#: templates/gatekeeper/gatekeeper_list.html:225
-#: templates/gatekeeper/gatekeeper_list.html:242
-#: templates/gatekeeper/gatekeeper_list.html:294
+#: templates/gatekeeper/gatekeeper_list.html:90
+#: templates/gatekeeper/gatekeeper_list.html:133
+#: templates/gatekeeper/gatekeeper_list.html:178
+#: templates/gatekeeper/gatekeeper_list.html:226
+#: templates/gatekeeper/gatekeeper_list.html:243
+#: templates/gatekeeper/gatekeeper_list.html:295
#: templates/routing_templates/list.html:29
#: templates/scheduler/scheduleprofile_form.html:123
#: templates/scheduler/scheduleprofile_list.html:25
@@ -2198,78 +2294,83 @@ msgstr "Exigir autenticação usando métodos ou grupos especificados."
msgid "Deny all access."
msgstr "Negar todo o acesso."
-#: templates/app_gateway/app_gateway_list.html:12
-#: templates/app_gateway/app_gateway_list.html:30
+#: templates/app_gateway/app_gateway_list.html:13
+#: templates/app_gateway/app_gateway_list.html:31
msgid "Applications"
msgstr "Aplicações"
-#: templates/app_gateway/app_gateway_list.html:18
+#: templates/app_gateway/app_gateway_list.html:19
msgid "Access Policies"
msgstr "Políticas de Acesso"
-#: templates/app_gateway/app_gateway_list.html:34
-#: templates/app_gateway/app_gateway_list.html:60
+#: templates/app_gateway/app_gateway_list.html:35
+#: templates/app_gateway/app_gateway_list.html:68
#: templates/dns/static_host_list.html:70
msgid "Hosts"
msgstr "Endereços"
-#: templates/app_gateway/app_gateway_list.html:42
+#: templates/app_gateway/app_gateway_list.html:44
+#: templates/app_gateway/app_gateway_list.html:50
msgid "Export Configuration"
msgstr "Exportar Configuração"
-#: templates/app_gateway/app_gateway_list.html:46
+#: templates/app_gateway/app_gateway_list.html:49
+msgid "Export is not available because Caddy is not enabled."
+msgstr ""
+
+#: templates/app_gateway/app_gateway_list.html:54
msgid "Add Application"
msgstr "Adicionar Aplicação"
-#: templates/app_gateway/app_gateway_list.html:61
+#: templates/app_gateway/app_gateway_list.html:69
msgid "Routes"
msgstr "Rotas"
-#: templates/app_gateway/app_gateway_list.html:80
-#: templates/app_gateway/application_details.html:39
+#: templates/app_gateway/app_gateway_list.html:88
+#: templates/app_gateway/application_details.html:47
msgid "Default (Deny)"
msgstr "Padrão (Negar)"
-#: templates/app_gateway/app_gateway_list.html:90
+#: templates/app_gateway/app_gateway_list.html:98
msgid "No Applications found."
msgstr "Nenhuma Aplicação encontrada."
-#: templates/app_gateway/app_gateway_list.html:102
+#: templates/app_gateway/app_gateway_list.html:110
msgid "Application"
msgstr "Aplicação"
-#: templates/app_gateway/app_gateway_list.html:121
+#: templates/app_gateway/app_gateway_list.html:129
msgid "No Hosts found."
msgstr "Nenhum Host encontrado."
-#: templates/app_gateway/app_gateway_list.html:129
+#: templates/app_gateway/app_gateway_list.html:137
msgid "Add Access Policy"
msgstr "Adicionar Política de Acesso"
-#: templates/app_gateway/app_gateway_list.html:140
-#: templates/gatekeeper/gatekeeper_list.html:43
-#: templates/gatekeeper/gatekeeper_list.html:64
+#: templates/app_gateway/app_gateway_list.html:148
+#: templates/gatekeeper/gatekeeper_list.html:44
+#: templates/gatekeeper/gatekeeper_list.html:65
msgid "Groups"
msgstr "Grupos"
-#: templates/app_gateway/app_gateway_list.html:141
+#: templates/app_gateway/app_gateway_list.html:149
msgid "Auth Methods"
msgstr "Métodos de Autenticação"
-#: templates/app_gateway/app_gateway_list.html:142
-#: templates/app_gateway/application_details.html:62
-#: templates/app_gateway/application_details.html:109
-#: templates/gatekeeper/gatekeeper_list.html:65
-#: templates/gatekeeper/gatekeeper_list.html:122
-#: templates/gatekeeper/gatekeeper_list.html:167
-#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/app_gateway/app_gateway_list.html:150
+#: templates/app_gateway/application_details.html:76
+#: templates/app_gateway/application_details.html:138
+#: templates/gatekeeper/gatekeeper_list.html:66
+#: templates/gatekeeper/gatekeeper_list.html:123
+#: templates/gatekeeper/gatekeeper_list.html:168
+#: templates/gatekeeper/gatekeeper_list.html:215
#: templates/scheduler/scheduleprofile_form.html:111
#: templates/scheduler/scheduleprofile_list.html:15
#: templates/wireguard/apply_route_template.html:28
msgid "Actions"
msgstr "Ações"
-#: templates/app_gateway/app_gateway_list.html:169
+#: templates/app_gateway/app_gateway_list.html:177
msgid "No Access Policies found."
msgstr "Nenhuma Política de Acesso encontrada."
@@ -2278,34 +2379,79 @@ msgstr "Nenhuma Política de Acesso encontrada."
msgid "Back to List"
msgstr "Voltar para a Lista"
-#: templates/app_gateway/application_details.html:41
+#: templates/app_gateway/application_details.html:15
+#: templates/app_gateway/application_details.html:59
+#: templates/app_gateway/application_details.html:91
+#: templates/app_gateway/application_details.html:94
+msgid "This application cannot be modified"
+msgstr ""
+
+#: templates/app_gateway/application_details.html:18
+#, fuzzy
+#| msgid "Application Route deleted successfully."
+msgid "This application cannot be deleted"
+msgstr "Rota da Aplicação excluída com sucesso."
+
+#: templates/app_gateway/application_details.html:49
msgid "Set Policy"
msgstr "Configurar Política"
-#: templates/app_gateway/application_details.html:48
+#: templates/app_gateway/application_details.html:56
msgid "Application Hosts"
msgstr "Hosts da Aplicação"
-#: templates/app_gateway/application_details.html:52
+#: templates/app_gateway/application_details.html:60
+#: templates/app_gateway/application_details.html:65
msgid "Add Host"
msgstr "Adicionar Host"
-#: templates/app_gateway/application_details.html:86
+#: templates/app_gateway/application_details.html:115
msgid "No Hosts configured for this application."
msgstr "Nenhum Host configurado para esta aplicação."
-#: templates/app_gateway/application_details.html:92
+#: templates/app_gateway/application_details.html:121
msgid "Application Routes"
msgstr "Rotas da Aplicação"
-#: templates/app_gateway/application_details.html:96
+#: templates/app_gateway/application_details.html:125
msgid "Add Route"
msgstr "Adicionar Rota"
-#: templates/app_gateway/application_details.html:136
+#: templates/app_gateway/application_details.html:165
msgid "No Routes configured for this application."
msgstr "Nenhuma Rota configurada para esta aplicação."
+#: templates/app_gateway/caddy_disabled_alert.html:5
+#, fuzzy
+#| msgid "Cluster is not enabled"
+msgid "Caddy is not enabled"
+msgstr "Cluster não está habilitado"
+
+#: templates/app_gateway/caddy_disabled_alert.html:6
+msgid ""
+"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway "
+"container to be running. Please start the application using docker-"
+"compose-caddy.yml."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:7
+msgid ""
+"Depending on your custom firewall or proxy rules, the way you access "
+"wireguard_webadmin may change slightly after enabling Caddy."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:8
+msgid ""
+"Switching to Caddy is simple, but it may require a bit of time and attention "
+"to review your current setup."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:9
+#, fuzzy
+#| msgid "For more information, please visit:"
+msgid "For more information, see the discussion:"
+msgstr "Para mais informações, visite:"
+
#: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72
#: templates/scheduler/scheduleprofile_form.html:82
#: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78
@@ -2819,85 +2965,92 @@ msgstr ""
msgid "Create Port forwarding Rule"
msgstr "Criar Regra de Encaminhamento de Porta"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:63
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:67
#: templates/gatekeeper/gatekeeper_user_form.html:43
msgid "View QR Code"
msgstr "Ver Código QR"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:64
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:68
#: templates/gatekeeper/gatekeeper_user_form.html:44
msgid "Generate TOTP Secret"
msgstr "Gerar Segredo TOTP"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:93
-#: templates/gatekeeper/gatekeeper_user_form.html:73
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:105
+#: templates/gatekeeper/gatekeeper_user_form.html:81
msgid "Please enter a TOTP Secret first to generate the QR code."
msgstr "Por favor, insira um Segredo TOTP primeiro para gerar o código QR."
-#: templates/gatekeeper/gatekeeper_list.html:18
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:127
+#: templates/gatekeeper/gatekeeper_user_form.html:103
+#, fuzzy
+#| msgid "Error creating invite."
+msgid "Error generating QR code."
+msgstr "Erro ao criar convite."
+
+#: templates/gatekeeper/gatekeeper_list.html:19
msgid "Gatekeeper Users"
msgstr "Usuários Gatekeeper"
-#: templates/gatekeeper/gatekeeper_list.html:24
+#: templates/gatekeeper/gatekeeper_list.html:25
msgid "Allowed Emails & Domains"
msgstr "E-mails e Domínios Permitidos"
-#: templates/gatekeeper/gatekeeper_list.html:30
+#: templates/gatekeeper/gatekeeper_list.html:31
msgid "IP Addresses"
msgstr "Endereços IP"
-#: templates/gatekeeper/gatekeeper_list.html:40
+#: templates/gatekeeper/gatekeeper_list.html:41
#: templates/user_manager/peer_group_list.html:11
msgid "Users"
msgstr "Usuários"
-#: templates/gatekeeper/gatekeeper_list.html:51
+#: templates/gatekeeper/gatekeeper_list.html:52
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
msgid "Add User"
msgstr "Adicionar Usuário"
-#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:64
msgid "TOTP"
msgstr "TOTP"
-#: templates/gatekeeper/gatekeeper_list.html:104
+#: templates/gatekeeper/gatekeeper_list.html:105
msgid "No Gatekeeper Users found."
msgstr "Nenhum Usuário Gatekeeper encontrado."
-#: templates/gatekeeper/gatekeeper_list.html:111
+#: templates/gatekeeper/gatekeeper_list.html:112
msgid "Add Group"
msgstr "Adicionar Grupo"
-#: templates/gatekeeper/gatekeeper_list.html:147
+#: templates/gatekeeper/gatekeeper_list.html:148
msgid "No Gatekeeper Groups found."
msgstr "Nenhum Grupo Gatekeeper encontrado."
-#: templates/gatekeeper/gatekeeper_list.html:156
+#: templates/gatekeeper/gatekeeper_list.html:157
msgid "Add Auth Method"
msgstr "Adicionar Método de Autenticação"
-#: templates/gatekeeper/gatekeeper_list.html:192
+#: templates/gatekeeper/gatekeeper_list.html:193
msgid "No Authentication Methods found."
msgstr "Nenhum Método de Autenticação encontrado."
-#: templates/gatekeeper/gatekeeper_list.html:212
+#: templates/gatekeeper/gatekeeper_list.html:213
msgid "Identity"
msgstr "Identidade"
-#: templates/gatekeeper/gatekeeper_list.html:213
-#: templates/gatekeeper/gatekeeper_list.html:275
+#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/gatekeeper/gatekeeper_list.html:276
msgid "Auth Method"
msgstr "Método de Autenticação"
-#: templates/gatekeeper/gatekeeper_list.html:257
+#: templates/gatekeeper/gatekeeper_list.html:258
msgid "No Allowed Emails or Domains found."
msgstr "Nenhum E-mail ou Domínio Permitido encontrado."
-#: templates/gatekeeper/gatekeeper_list.html:276
+#: templates/gatekeeper/gatekeeper_list.html:277
msgid "Manage"
msgstr "Gerenciar"
-#: templates/gatekeeper/gatekeeper_list.html:309
+#: templates/gatekeeper/gatekeeper_list.html:310
msgid "No IP Addresses found."
msgstr "Nenhum Endereço IP encontrado."
@@ -3519,6 +3672,10 @@ msgstr "Excluir Peer"
msgid "Please type \\\"delete\\\" to remove peer configuration."
msgstr "Por favor, digite \\\"delete\\\" para remover a configuração do peer."
+#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
+msgid "Display Name"
+msgstr "Nome de Exibição"
+
#: templates/wireguard/wireguard_manage_server.html:27
msgid ""
"\n"
@@ -4504,5 +4661,25 @@ msgstr ""
"Nenhuma interface encontrada|Nenhuma interface WireGuard foi encontrada para "
"processar."
+#~ msgid "This is a reserved system name."
+#~ msgstr "Este é um nome de sistema reservado."
+
+#~ msgid ""
+#~ "TOTP must be combined with a Local Password or OpenID Connect "
+#~ "authentication method."
+#~ msgstr ""
+#~ "O TOTP deve ser combinado com um método de autenticação de Senha Local ou "
+#~ "OpenID Connect."
+
+#~ msgid "Route identifier, used in export (e.g.: public_area)"
+#~ msgstr "Identificador da rota, usado na exportação (ex: public_area)"
+
+#~ msgid ""
+#~ "Caddy is not active. Configuration files were exported for debugging "
+#~ "purposes."
+#~ msgstr ""
+#~ "O Caddy não está ativo. Os arquivos de configuração foram exportados para "
+#~ "fins de depuração."
+
#~ msgid "Global TOTP Before Authentication"
#~ msgstr "TOTP Global Antes da Autenticação"
diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo
index e22bd8a..e4e1d9c 100644
Binary files a/locale/sk/LC_MESSAGES/django.mo and b/locale/sk/LC_MESSAGES/django.mo differ
diff --git a/locale/sk/LC_MESSAGES/django.po b/locale/sk/LC_MESSAGES/django.po
index 16052cf..48b0de5 100644
--- a/locale/sk/LC_MESSAGES/django.po
+++ b/locale/sk/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-03-15 17:20-0300\n"
+"POT-Creation-Date: 2026-03-18 10:58-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -34,17 +34,17 @@ msgstr "Späť"
#: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129
#: routing_templates/forms.py:37
-#: templates/app_gateway/app_gateway_list.html:158
-#: templates/app_gateway/application_details.html:75
-#: templates/app_gateway/application_details.html:125
+#: templates/app_gateway/app_gateway_list.html:166
+#: templates/app_gateway/application_details.html:103
+#: templates/app_gateway/application_details.html:154
#: templates/firewall/manage_firewall_rule.html:382
#: templates/firewall/manage_redirect_rule.html:86
-#: templates/gatekeeper/gatekeeper_list.html:93
-#: templates/gatekeeper/gatekeeper_list.html:136
-#: templates/gatekeeper/gatekeeper_list.html:181
-#: templates/gatekeeper/gatekeeper_list.html:229
-#: templates/gatekeeper/gatekeeper_list.html:246
-#: templates/gatekeeper/gatekeeper_list.html:298
+#: templates/gatekeeper/gatekeeper_list.html:94
+#: templates/gatekeeper/gatekeeper_list.html:137
+#: templates/gatekeeper/gatekeeper_list.html:182
+#: templates/gatekeeper/gatekeeper_list.html:230
+#: templates/gatekeeper/gatekeeper_list.html:247
+#: templates/gatekeeper/gatekeeper_list.html:299
#: templates/scheduler/scheduleprofile_form.html:127
#: templates/scheduler/scheduleprofile_list.html:29
#: templates/wireguard/peer_list/peer_preview_modal.html:109
@@ -64,12 +64,12 @@ msgid ""
msgstr ""
"Naozaj chcete regenerovať token? Starý token okamžite prestane fungovať."
-#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92
-#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237
-#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124
-#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70
-#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299
-#: gatekeeper/forms.py:329 gatekeeper/forms.py:360
+#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99
+#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241
+#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124
+#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71
+#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362
+#: gatekeeper/forms.py:392 gatekeeper/forms.py:423
#: routing_templates/forms.py:71 scheduler/forms.py:102
#: templates/firewall/manage_firewall_rule.html:379
#: templates/firewall/manage_firewall_settings.html:59
@@ -82,14 +82,14 @@ msgstr ""
msgid "Save"
msgstr "Uložiť"
-#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106
-#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174
+#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113
+#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188
#: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47
-#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58
-#: templates/app_gateway/app_gateway_list.html:138
-#: templates/app_gateway/application_details.html:26
+#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66
+#: templates/app_gateway/app_gateway_list.html:146
+#: templates/app_gateway/application_details.html:35
#: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68
-#: templates/gatekeeper/gatekeeper_list.html:165
+#: templates/gatekeeper/gatekeeper_list.html:166
#: templates/routing_templates/list.html:8
#: templates/scheduler/scheduleprofile_list.html:13
#: templates/user_manager/peer_group_list.html:8
@@ -127,16 +127,16 @@ msgid "Enabled"
msgstr "Povolené"
#: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106
-#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68
-#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170
-#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267
-#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354
-#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18
-#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23
-#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121
-#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222
-#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334
-#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436
+#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83
+#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196
+#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297
+#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384
+#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18
+#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25
+#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125
+#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226
+#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350
+#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452
#: templates/access_denied.html:9
msgid "Access Denied"
msgstr "Prístup zamietnutý"
@@ -206,20 +206,19 @@ msgstr "Ste si istí, že chcete odstrániť kľúč API \"%(name)s\"?"
msgid "API Documentation"
msgstr "Dokumentácia API"
-#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27
-#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
-msgid "Display Name"
-msgstr "Zobrazovací názov"
-
-#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59
-#: templates/app_gateway/application_details.html:28
+#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67
+#: templates/app_gateway/application_details.html:36
msgid "Upstream"
msgstr "Upstream"
-#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137
-#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279
-#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213
-#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361
+#: app_gateway/forms.py:20
+msgid "Allow invalid/self-signed certificate"
+msgstr ""
+
+#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145
+#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284
+#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240
+#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424
#: scheduler/forms.py:103
#: templates/app_gateway/access_policy_type_select.html:50
#: templates/generic_delete_confirmation.html:19
@@ -227,58 +226,64 @@ msgstr "Upstream"
msgid "Cancel"
msgstr "Zrušiť"
-#: app_gateway/forms.py:54
-msgid "This is a reserved system name."
-msgstr "Toto je vyhradený systémový názov."
-
-#: app_gateway/forms.py:58
+#: app_gateway/forms.py:55
msgid "This upstream is reserved by the system."
msgstr "Tento upstream je vyhradený systémom."
-#: app_gateway/forms.py:61
+#: app_gateway/forms.py:58
msgid "Upstream URL cannot contain spaces."
msgstr "URL adresa upstream nemôže obsahovať medzery."
-#: app_gateway/forms.py:67
+#: app_gateway/forms.py:64
msgid "Enter a valid upstream URL starting with http:// or https://"
msgstr ""
"Zadajte platnú URL adresu upstream začínajúcu na http:// alebo https://"
-#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65
-#: templates/app_gateway/app_gateway_list.html:101
-#: templates/app_gateway/application_details.html:61
+#: app_gateway/forms.py:66
+msgid ""
+"Upstream must be a bare host address with no path, query or fragment. Use "
+"http://host or http://host:port"
+msgstr ""
+
+#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65
+#: templates/app_gateway/app_gateway_list.html:109
+#: templates/app_gateway/application_details.html:75
#: templates/dns/static_host_list.html:17
#: templates/wireguard/server_detail.html:39
msgid "Hostname"
msgstr "Názov hostiteľa"
-#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139
+#: app_gateway/forms.py:84
+msgid "Hostname contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147
msgid "Policy Type"
msgstr "Typ politiky"
-#: app_gateway/forms.py:108
+#: app_gateway/forms.py:115
msgid "Allowed Groups"
msgstr "Povolené skupiny"
-#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12
+#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13
msgid "Authentication Methods"
msgstr "Metódy autentifikácie"
-#: app_gateway/forms.py:188
+#: app_gateway/forms.py:196
msgid "Cannot select more than one Local Password authentication method."
msgstr "Nemožno vybrať viac ako jednu metódu autentifikácie lokálnym heslom."
-#: app_gateway/forms.py:192
+#: app_gateway/forms.py:200
msgid ""
"Cannot select more than one OpenID Connect (OIDC) authentication method."
msgstr ""
"Nemožno vybrať viac ako jednu metódu autentifikácie OpenID Connect (OIDC)."
-#: app_gateway/forms.py:196
+#: app_gateway/forms.py:204
msgid "Cannot select more than one TOTP authentication method."
msgstr "Nemožno vybrať viac ako jednu metódu autentifikácie TOTP."
-#: app_gateway/forms.py:200
+#: app_gateway/forms.py:208
msgid ""
"Cannot select both Local Password and OpenID Connect (OIDC) authentication "
"methods."
@@ -286,15 +291,7 @@ msgstr ""
"Nemožno vybrať súčasne metódy autentifikácie lokálnym heslom a OpenID "
"Connect (OIDC)."
-#: app_gateway/forms.py:204
-msgid ""
-"TOTP must be combined with a Local Password or OpenID Connect authentication "
-"method."
-msgstr ""
-"TOTP musí byť kombinované s metódou autentifikácie Lokálne heslo alebo OpenID "
-"Connect."
-
-#: app_gateway/forms.py:208
+#: app_gateway/forms.py:212
msgid ""
"At least one user group must be selected when using Local Password "
"authentication."
@@ -302,74 +299,101 @@ msgstr ""
"Pri použití autentifikácie lokálnym heslom musí byť vybraná aspoň jedna "
"skupina používateľov."
-#: app_gateway/forms.py:212
+#: app_gateway/forms.py:216
msgid "User groups can only be used with Local Password authentication."
msgstr ""
"Skupiny používateľov možno použiť len s autentifikáciou lokálnym heslom."
-#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62
-#: templates/app_gateway/application_details.html:31
+#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70
+#: templates/app_gateway/application_details.html:39
#: templates/firewall/firewall_nav_tabs.html:15
msgid "Default Policy"
msgstr "Predvolená politika"
-#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105
+#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134
msgid "Route Name"
msgstr "Názov trasy"
-#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106
+#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135
msgid "Path Prefix"
msgstr "Prefix cesty"
-#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107
+#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136
msgid "Policy"
msgstr "Politika"
-#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108
+#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137
msgid "Order"
msgstr "Poradie"
-#: app_gateway/models.py:12
+#: app_gateway/forms.py:299
+#, fuzzy
+#| msgid "Invite URL must start with 'https://'."
+msgid "Path prefix must start with /."
+msgstr "URL pozvánky musí začínať na 'https://'."
+
+#: app_gateway/forms.py:301
+#, fuzzy
+#| msgid "Upstream URL cannot contain spaces."
+msgid "Path prefix cannot contain spaces."
+msgstr "URL adresa upstream nemôže obsahovať medzery."
+
+#: app_gateway/forms.py:303
+msgid "Path prefix contains invalid characters."
+msgstr ""
+
+#: app_gateway/forms.py:308
+#, fuzzy
+#| msgid "This upstream is reserved by the system."
+msgid "This path prefix is reserved by the system."
+msgstr "Tento upstream je vyhradený systémom."
+
+#: app_gateway/models.py:14
msgid "Upstream address, e.g.: http://10.188.18.27:3000"
msgstr "Upstream adresa, napr.: http://10.188.18.27:3000"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:15
+msgid "Allow invalid or self-signed TLS certificates from the upstream"
+msgstr ""
+
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:19
msgid "Public"
msgstr "Verejné"
-#: app_gateway/models.py:45
+#: app_gateway/models.py:53
#: templates/app_gateway/access_policy_type_select.html:30
msgid "Protected"
msgstr "Chránené"
-#: app_gateway/models.py:45 gatekeeper/models.py:108
+#: app_gateway/models.py:53 gatekeeper/models.py:142
#: templates/app_gateway/access_policy_type_select.html:41
-#: templates/gatekeeper/gatekeeper_list.html:288
+#: templates/gatekeeper/gatekeeper_list.html:289
msgid "Deny"
msgstr "Odmietnuť"
-#: app_gateway/models.py:80
-msgid "Route identifier, used in export (e.g.: public_area)"
-msgstr "Identifikátor trasy, použitý v exporte (napr.: public_area)"
-
-#: app_gateway/views.py:60
+#: app_gateway/views.py:75
msgid "Application Details"
msgstr "Podrobnosti o aplikácii"
-#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15
+#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204
+msgid "The WireGuard WebAdmin application cannot be modified."
+msgstr ""
+
+#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16
+#: templates/app_gateway/application_details.html:23
msgid "Edit Application"
msgstr "Upraviť aplikáciu"
-#: app_gateway/views.py:77
+#: app_gateway/views.py:95
msgid "Create Application"
msgstr "Vytvoriť aplikáciu"
-#: app_gateway/views.py:84
+#: app_gateway/views.py:102
msgid "Application saved successfully."
msgstr "Aplikácia bola úspešne uložená."
-#: app_gateway/views.py:89
+#: app_gateway/views.py:107
msgid ""
"\n"
" Application
\n"
@@ -403,62 +427,67 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:120
+#: app_gateway/views.py:137
+msgid "The WireGuard WebAdmin application cannot be deleted."
+msgstr ""
+
+#: app_gateway/views.py:142
msgid "Application deleted successfully."
msgstr "Aplikácia bola úspešne odstránená."
-#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18
+#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19
+#: templates/app_gateway/application_details.html:26
msgid "Delete Application"
msgstr "Odstrániť aplikáciu"
-#: app_gateway/views.py:127
+#: app_gateway/views.py:149
#, python-format
msgid "Are you sure you want to delete the application \"%(name)s\"?"
msgstr "Ste si istí, že chcete odstrániť aplikáciu \"%(name)s\"?"
-#: app_gateway/views.py:143
+#: app_gateway/views.py:165
msgid "Edit Application Host"
msgstr "Upraviť hostiteľa aplikácie"
-#: app_gateway/views.py:147
+#: app_gateway/views.py:169
msgid "Add Application Host"
msgstr "Pridať hostiteľa aplikácie"
-#: app_gateway/views.py:156
+#: app_gateway/views.py:182
msgid "Application Host saved successfully."
msgstr "Hostiteľ aplikácie bol úspešne uložený."
-#: app_gateway/views.py:179
+#: app_gateway/views.py:209
msgid "Application Host deleted successfully."
msgstr "Hostiteľ aplikácie bol úspešne odstránený."
-#: app_gateway/views.py:184
+#: app_gateway/views.py:214
msgid "Delete Application Host"
msgstr "Odstrániť hostiteľa aplikácie"
-#: app_gateway/views.py:186
+#: app_gateway/views.py:216
#, python-format
msgid "Are you sure you want to delete the host \"%(hostname)s\"?"
msgstr "Naozaj chcete odstrániť hostiteľa \"%(hostname)s\"?"
-#: app_gateway/views.py:197
+#: app_gateway/views.py:227
#: templates/app_gateway/access_policy_type_select.html:9
msgid "Select Access Policy Type"
msgstr "Vyberte typ prístupovej politiky"
-#: app_gateway/views.py:212
+#: app_gateway/views.py:242
msgid "Edit Access Policy"
msgstr "Upraviť politiku prístupu"
-#: app_gateway/views.py:216
+#: app_gateway/views.py:246
msgid "Create Access Policy"
msgstr "Vytvoriť politiku prístupu"
-#: app_gateway/views.py:223
+#: app_gateway/views.py:253
msgid "Access Policy saved successfully."
msgstr "Politika prístupu bola úspešne uložená."
-#: app_gateway/views.py:229
+#: app_gateway/views.py:259
msgid ""
"\n"
" Public Policy
\n"
@@ -472,7 +501,7 @@ msgstr ""
"akéhokoľvek overenia.\n"
" "
-#: app_gateway/views.py:237
+#: app_gateway/views.py:267
msgid ""
"\n"
" Deny Policy
\n"
@@ -485,7 +514,7 @@ msgstr ""
"trasám.\n"
" "
-#: app_gateway/views.py:245
+#: app_gateway/views.py:275
msgid ""
"\n"
" Protected Policy
\n"
@@ -515,11 +544,11 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:276
+#: app_gateway/views.py:306
msgid "Access Policy deleted successfully."
msgstr "Politika prístupu bola úspešne odstránená."
-#: app_gateway/views.py:278
+#: app_gateway/views.py:308
msgid ""
"Cannot delete this Access Policy because it is currently in use by an "
"Application Route or Application Default Policy."
@@ -527,53 +556,53 @@ msgstr ""
"Túto prístupovú politiku nie je možné odstrániť, pretože sa momentálne "
"používa v trase aplikácie alebo v predvolenej politike aplikácie."
-#: app_gateway/views.py:283
+#: app_gateway/views.py:313
msgid "Delete Access Policy"
msgstr "Odstrániť politiku prístupu"
-#: app_gateway/views.py:285
+#: app_gateway/views.py:315
#, python-format
msgid "Are you sure you want to delete the access policy \"%(name)s\"?"
msgstr "Ste si istí, že chcete odstrániť politiku prístupu \"%(name)s\"?"
-#: app_gateway/views.py:301
+#: app_gateway/views.py:331
msgid "Edit Application Default Policy"
msgstr "Upraviť predvolenú politiku aplikácie"
-#: app_gateway/views.py:305
+#: app_gateway/views.py:335
msgid "Set Application Default Policy"
msgstr "Nastaviť predvolenú politiku aplikácie"
-#: app_gateway/views.py:314
+#: app_gateway/views.py:344
msgid "Application Default Policy saved successfully."
msgstr "Predvolená politika aplikácie bola úspešne uložená."
-#: app_gateway/views.py:337
+#: app_gateway/views.py:367
msgid "Application Default Policy deleted successfully."
msgstr "Predvolená politika aplikácie bola úspešne odstránená."
-#: app_gateway/views.py:342
+#: app_gateway/views.py:372
msgid "Delete Application Default Policy"
msgstr "Odstrániť predvolenú politiku aplikácie"
-#: app_gateway/views.py:344
+#: app_gateway/views.py:374
#, python-format
msgid "Are you sure you want to remove the default policy for \"%(name)s\"?"
msgstr "Ste si istí, že chcete odstrániť predvolenú politiku pre \"%(name)s\"?"
-#: app_gateway/views.py:362
+#: app_gateway/views.py:392
msgid "Edit Application Route"
msgstr "Upraviť trasu aplikácie"
-#: app_gateway/views.py:366
+#: app_gateway/views.py:396
msgid "Add Application Route"
msgstr "Pridať trasu aplikácie"
-#: app_gateway/views.py:375
+#: app_gateway/views.py:405
msgid "Application Route saved successfully."
msgstr "Trasa aplikácie bola úspešne uložená."
-#: app_gateway/views.py:380
+#: app_gateway/views.py:410
msgid ""
"\n"
" Application Route
\n"
@@ -613,41 +642,41 @@ msgstr ""
" \n"
" "
-#: app_gateway/views.py:413
+#: app_gateway/views.py:443
msgid "Application Route deleted successfully."
msgstr "Trasa aplikácie bola úspešne odstránená."
-#: app_gateway/views.py:418
+#: app_gateway/views.py:448
msgid "Delete Application Route"
msgstr "Odstrániť trasu aplikácie"
-#: app_gateway/views.py:420
+#: app_gateway/views.py:450
#, python-format
msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?"
msgstr "Naozaj chcete odstrániť trasu \"%(name)s\" (%(path)s)?"
-#: app_gateway/views.py:443
+#: app_gateway/views.py:468
+msgid ""
+"Configuration export is not available because Caddy is not enabled. To use "
+"App Gateway and Gatekeeper, start the application using docker-compose-"
+"caddy.yml."
+msgstr ""
+
+#: app_gateway/views.py:478
msgid "Configuration exported successfully."
msgstr "Konfigurácia bola úspešne exportovaná."
-#: app_gateway/views.py:445
-msgid ""
-"Caddy is not active. Configuration files were exported for debugging "
-"purposes."
-msgstr ""
-"Caddy nie je aktívny. Konfiguračné súbory boli exportované na účely ladenia."
-
#: cluster/forms.py:20
msgid "IP Lock"
msgstr "IP zámok"
-#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271
+#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315
#: 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/gatekeeper/gatekeeper_list.html:272
+#: templates/gatekeeper/gatekeeper_list.html:273
#: templates/wireguard/wireguard_status.html:45
msgid "IP Address"
msgstr "IP adresa"
@@ -918,7 +947,7 @@ msgstr "Statický DNS"
msgid "Invalid hostname."
msgstr "Neplatný názov hostiteľa."
-#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274
+#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318
#: templates/api_v2/api_documentation.html:51
#: templates/dns/static_host_list.html:69
#: templates/firewall/manage_redirect_rule.html:18
@@ -1249,13 +1278,13 @@ msgstr "Spravovať nastavenia firewall"
msgid "Firewall settings saved successfully"
msgstr "Nastavenia firewall boli úspešne uložené"
-#: gatekeeper/forms.py:17 templates/accounts/login.html:23
+#: gatekeeper/forms.py:18 templates/accounts/login.html:23
#: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14
#: vpn_invite/forms.py:282
msgid "Password"
msgstr "Heslo"
-#: gatekeeper/forms.py:20
+#: gatekeeper/forms.py:21
msgid ""
"Minimum 8 characters, with at least one uppercase letter, one lowercase "
"letter, and one number."
@@ -1263,15 +1292,15 @@ msgstr ""
"Minimálne 8 znakov, aspoň jedno veľké písmeno, jedno malé písmeno a jedno "
"číslo."
-#: gatekeeper/forms.py:23
+#: gatekeeper/forms.py:24
msgid "Confirm Password"
msgstr "Potvrdiť heslo"
-#: gatekeeper/forms.py:28 gatekeeper/forms.py:161
+#: gatekeeper/forms.py:29 gatekeeper/forms.py:163
msgid "TOTP Validation PIN"
msgstr "Validačný PIN TOTP"
-#: gatekeeper/forms.py:31 gatekeeper/forms.py:164
+#: gatekeeper/forms.py:32 gatekeeper/forms.py:166
msgid ""
"Enter a 6-digit PIN generated by your authenticator app to validate the "
"secret."
@@ -1279,185 +1308,219 @@ msgstr ""
"Zadajte 6-miestny PIN vygenerovaný vašou autentifikačnou aplikáciou na "
"overenie tajomstva."
-#: gatekeeper/forms.py:38 templates/accounts/login.html:14
-#: templates/gatekeeper/gatekeeper_list.html:61
+#: gatekeeper/forms.py:39 templates/accounts/login.html:14
+#: templates/gatekeeper/gatekeeper_list.html:62
#: templates/user_manager/list.html:8 user_manager/forms.py:13
#: vpn_invite/forms.py:281
msgid "Username"
msgstr "Používateľské meno"
-#: gatekeeper/forms.py:39 gatekeeper/forms.py:344
-#: templates/gatekeeper/gatekeeper_list.html:62
-#: templates/gatekeeper/gatekeeper_list.html:220
+#: gatekeeper/forms.py:40 gatekeeper/forms.py:407
+#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:221
#: templates/wireguard/peer_list/peer_preview_modal.html:103
msgid "Email"
msgstr "E-mail"
-#: gatekeeper/forms.py:40
+#: gatekeeper/forms.py:41
msgid "TOTP Secret"
msgstr "TOTP tajomstvo"
-#: gatekeeper/forms.py:87
+#: gatekeeper/forms.py:88
msgid "Password is required."
msgstr "Heslo je povinné."
-#: gatekeeper/forms.py:90 user_manager/forms.py:127
+#: gatekeeper/forms.py:91 user_manager/forms.py:127
msgid "Password must be at least 8 characters long."
msgstr "Heslo musí mať aspoň 8 znakov."
-#: gatekeeper/forms.py:92
+#: gatekeeper/forms.py:93
msgid "Password must contain at least one lowercase letter."
msgstr "Heslo musí obsahovať aspoň jedno malé písmeno."
-#: gatekeeper/forms.py:94
+#: gatekeeper/forms.py:95
msgid "Password must contain at least one uppercase letter."
msgstr "Heslo musí obsahovať aspoň jedno veľké písmeno."
-#: gatekeeper/forms.py:96
+#: gatekeeper/forms.py:97
msgid "Password must contain at least one number."
msgstr "Heslo musí obsahovať aspoň jedno číslo."
-#: gatekeeper/forms.py:98
+#: gatekeeper/forms.py:99
msgid "Passwords do not match."
msgstr "Heslá sa nezhodujú."
-#: gatekeeper/forms.py:103 gatekeeper/forms.py:249
+#: gatekeeper/forms.py:104 gatekeeper/forms.py:276
msgid "Please provide a PIN to validate the TOTP secret."
msgstr "Na overenie tajomstva TOTP zadajte PIN."
-#: gatekeeper/forms.py:108 gatekeeper/forms.py:254
+#: gatekeeper/forms.py:109 gatekeeper/forms.py:281
msgid "Invalid TOTP PIN."
msgstr "Neplatný PIN TOTP."
-#: gatekeeper/forms.py:110 gatekeeper/forms.py:256
+#: gatekeeper/forms.py:111 gatekeeper/forms.py:283
msgid "Invalid TOTP secret format. Must be a valid Base32 string."
msgstr "Neplatný formát tajomstva TOTP. Musí to byť platný reťazec Base32."
-#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120
+#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
msgid "Group Name"
msgstr "Názov skupiny"
-#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121
+#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122
msgid "Members"
msgstr "Členovia"
+#: gatekeeper/forms.py:169
+#, fuzzy
+#| msgid "Expiration"
+msgid "Session Expiration"
+msgstr "Expirácia"
+
#: gatekeeper/forms.py:175
+msgid "Unit"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Hour(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:176
+msgid "Day(s)"
+msgstr ""
+
+#: gatekeeper/forms.py:189
msgid "Authentication Type"
msgstr "Typ autentifikácie"
-#: gatekeeper/forms.py:176
+#: gatekeeper/forms.py:190
msgid "Global TOTP Secret"
msgstr "Globálne TOTP tajomstvo"
-#: gatekeeper/forms.py:177
+#: gatekeeper/forms.py:191
msgid "OIDC Provider URL"
msgstr "URL poskytovateľa OIDC"
-#: gatekeeper/forms.py:178
+#: gatekeeper/forms.py:192
msgid "OIDC Client ID"
msgstr "ID klienta OIDC"
-#: gatekeeper/forms.py:179
+#: gatekeeper/forms.py:193
msgid "OIDC Client Secret"
msgstr "Secret klienta OIDC"
-#: gatekeeper/forms.py:230
+#: gatekeeper/forms.py:257
msgid "TOTP secret must be empty for Local Password authentication."
msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu miestnym heslom."
-#: gatekeeper/forms.py:232
+#: gatekeeper/forms.py:259
msgid "TOTP validation PIN must be empty for Local Password authentication."
msgstr ""
"Validačný PIN TOTP musí byť prázdny pre autentifikáciu miestnym heslom."
-#: gatekeeper/forms.py:234
+#: gatekeeper/forms.py:261
msgid "OIDC fields must be empty for Local Password authentication."
msgstr "Polia OIDC musia byť prázdne pre autentifikáciu miestnym heslom."
-#: gatekeeper/forms.py:240
+#: gatekeeper/forms.py:267
msgid "Only one Local Password authentication method can be configured."
msgstr ""
"Je možné nakonfigurovať iba jednu metódu autentifikácie miestnym heslom."
-#: gatekeeper/forms.py:243
+#: gatekeeper/forms.py:270
msgid "OIDC fields must be empty for TOTP authentication."
msgstr "Polia OIDC musia byť prázdne pre autentifikáciu TOTP."
-#: gatekeeper/forms.py:245
+#: gatekeeper/forms.py:272
msgid "TOTP secret is required for TOTP authentication."
msgstr "TOTP tajomstvo je povinné pre autentifikáciu TOTP."
-#: gatekeeper/forms.py:259
+#: gatekeeper/forms.py:285
+msgid ""
+"OIDC authentication is temporarily unavailable and will be available soon."
+msgstr ""
+
+#: gatekeeper/forms.py:287
msgid "TOTP secret must be empty for OIDC authentication."
msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu OIDC."
-#: gatekeeper/forms.py:261
+#: gatekeeper/forms.py:289
msgid "TOTP validation PIN must be empty for OIDC authentication."
msgstr "Validačný PIN TOTP musí byť prázdny pre autentifikáciu OIDC."
-#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343
+#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406
msgid "Authentication Method"
msgstr "Metóda autentifikácie"
-#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273
+#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274
msgid "Prefix Length"
msgstr "Dĺžka prefixu"
-#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47
+#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47
#: templates/firewall/manage_firewall_rule.html:360
-#: templates/gatekeeper/gatekeeper_list.html:274
+#: templates/gatekeeper/gatekeeper_list.html:275
msgid "Action"
msgstr "Akcia"
-#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237
+#: gatekeeper/forms.py:332
+#, python-format
+msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d."
+msgstr ""
+
+#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238
msgid "Domain"
msgstr "Doména"
-#: gatekeeper/models.py:10
+#: gatekeeper/models.py:27
msgid "Local Password"
msgstr "Miestne heslo"
-#: gatekeeper/models.py:11
+#: gatekeeper/models.py:28
msgid "One-Time Password (TOTP)"
msgstr "Jednorazové heslo (TOTP)"
-#: gatekeeper/models.py:12
+#: gatekeeper/models.py:29
msgid "OpenID Connect (OIDC)"
msgstr "OpenID Connect (OIDC)"
-#: gatekeeper/models.py:13
+#: gatekeeper/models.py:30
msgid "IP Address List"
msgstr "Zoznam IP adries"
-#: gatekeeper/models.py:17
+#: gatekeeper/models.py:34
msgid "Shared/global TOTP secret key"
msgstr "Zdieľaný/globálny tajný kľúč TOTP"
-#: gatekeeper/models.py:68
+#: gatekeeper/models.py:39
+#, fuzzy
+#| msgid "Expiration (minutes)"
+msgid "Session expiration time in minutes"
+msgstr "Expirácia (minúty)"
+
+#: gatekeeper/models.py:96
msgid "Password for local authentication (leave blank if not using)"
msgstr "Heslo pre miestnu autentifikáciu (ak nepoužívate, nechajte prázdne)"
-#: gatekeeper/models.py:69
+#: gatekeeper/models.py:97
msgid "Per-user TOTP secret key"
msgstr "Tajný kľúč TOTP pre jednotlivých používateľov"
-#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286
+#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287
msgid "Allow"
msgstr "Povoliť"
-#: gatekeeper/views.py:54
+#: gatekeeper/views.py:58
msgid "Edit Gatekeeper User"
msgstr "Upraviť používateľa Gatekeeper"
-#: gatekeeper/views.py:57
+#: gatekeeper/views.py:61
msgid "Create Gatekeeper User"
msgstr "Vytvoriť používateľa Gatekeeper"
-#: gatekeeper/views.py:64
+#: gatekeeper/views.py:68
msgid "Gatekeeper User saved successfully."
msgstr "Používateľ Gatekeeper bol úspešne uložený."
-#: gatekeeper/views.py:69
+#: gatekeeper/views.py:73
msgid ""
"\n"
" Gatekeeper User
\n"
@@ -1481,75 +1544,96 @@ msgid ""
msgstr ""
"\n"
" Používateľ Gatekeeper
\n"
-" Používatelia Gatekeeper sa používajú na autentifikáciu voči chráneným "
-"aplikáciám spravovaným touto bránou.
\n"
+" Používatelia Gatekeeper sa používajú na autentifikáciu voči "
+"chráneným aplikáciám spravovaným touto bránou.
\n"
"\n"
" Heslo
\n"
-" Vyžaduje sa pri vytváraní používateľa. Pri úprave ponechajte obe polia pre heslo "
-"prázdne, aby sa zachovalo aktuálne heslo.\n"
+"
Vyžaduje sa pri vytváraní používateľa. Pri úprave ponechajte obe "
+"polia pre heslo prázdne, aby sa zachovalo aktuálne heslo.\n"
" Heslá sa ukladajú pomocou hašovania Argon2id.
\n"
"\n"
" TOTP tajomstvo
\n"
-" Voliteľné TOTP tajomstvo pre konkrétneho používateľa. Keď je nastavené, tento používateľ sa "
-"bude autentifikovať pomocou vlastného tajomstva namiesto\n"
-" globálneho TOTP tajomstva konfigurovaného v metóde autentifikácie. Pomocou "
-"tlačidiel pod poľom vygenerujte\n"
-" náhodné tajomstvo a naskenujte QR kód pomocou vašej aplikácie autentifikátora. "
-"Pred uložením overte tajomstvo zadaním aktuálneho\n"
+"
Voliteľné TOTP tajomstvo pre konkrétneho používateľa. Keď je "
+"nastavené, tento používateľ sa bude autentifikovať pomocou vlastného "
+"tajomstva namiesto\n"
+" globálneho TOTP tajomstva konfigurovaného v metóde autentifikácie. "
+"Pomocou tlačidiel pod poľom vygenerujte\n"
+" náhodné tajomstvo a naskenujte QR kód pomocou vašej aplikácie "
+"autentifikátora. Pred uložením overte tajomstvo zadaním aktuálneho\n"
" 6-miestneho kódu PIN.
\n"
" "
-#: gatekeeper/views.py:106
+#: gatekeeper/views.py:110
msgid "Gatekeeper User deleted successfully."
msgstr "Používateľ Gatekeeper bol úspešne odstránený."
-#: gatekeeper/views.py:111
+#: gatekeeper/views.py:115
msgid "Delete Gatekeeper User"
msgstr "Odstrániť používateľa Gatekeeper"
-#: gatekeeper/views.py:113
+#: gatekeeper/views.py:117
#, python-format
msgid "Are you sure you want to delete the user \"%(username)s\"?"
msgstr "Naozaj chcete odstrániť používateľa \"%(username)s\"?"
-#: gatekeeper/views.py:127
+#: gatekeeper/views.py:131
msgid "Edit Gatekeeper Group"
msgstr "Upraviť skupinu Gatekeeper"
-#: gatekeeper/views.py:130
+#: gatekeeper/views.py:134
msgid "Create Gatekeeper Group"
msgstr "Vytvoriť skupinu Gatekeeper"
-#: gatekeeper/views.py:137
+#: gatekeeper/views.py:141
msgid "Gatekeeper Group saved successfully."
msgstr "Skupina Gatekeeper bola úspešne uložená."
-#: gatekeeper/views.py:159
+#: gatekeeper/views.py:163
msgid "Gatekeeper Group deleted successfully."
msgstr "Skupina Gatekeeper bola úspešne odstránená."
-#: gatekeeper/views.py:164
+#: gatekeeper/views.py:168
msgid "Delete Gatekeeper Group"
msgstr "Odstrániť skupinu Gatekeeper"
-#: gatekeeper/views.py:166
+#: gatekeeper/views.py:170
#, python-format
msgid "Are you sure you want to delete the group \"%(name)s\"?"
msgstr "Naozaj chcete odstrániť skupinu \"%(name)s\"?"
-#: gatekeeper/views.py:180
+#: gatekeeper/views.py:184
msgid "Edit Authentication Method"
msgstr "Upraviť metódu autentifikácie"
-#: gatekeeper/views.py:183
+#: gatekeeper/views.py:187
msgid "Create Authentication Method"
msgstr "Vytvoriť metódu autentifikácie"
-#: gatekeeper/views.py:190
+#: gatekeeper/views.py:194
msgid "Authentication Method saved successfully."
msgstr "Metóda autentifikácie bola úspešne uložená."
-#: gatekeeper/views.py:195
+#: gatekeeper/views.py:199
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " Authentication Types
\n"
+#| " Select how users will authenticate through this method.
\n"
+#| " \n"
+#| " Local Password
\n"
+#| " Users will authenticate using a standard username and password "
+#| "stored locally. Only one of this type can be created.
\n"
+#| " \n"
+#| " OIDC (OpenID Connect)
\n"
+#| " Users will authenticate via an external identity provider "
+#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, "
+#| "and Client Secret.
\n"
+#| " \n"
+#| " TOTP (Time-Based One-Time Password)
\n"
+#| " Users will need to enter a rotating token from an "
+#| "authenticator app. If a user does not have a personal TOTP configured, "
+#| "the Global TOTP Secret will be used instead.
\n"
+#| " "
msgid ""
"\n"
" Authentication Types
\n"
@@ -1561,8 +1645,8 @@ msgid ""
" \n"
" OIDC (OpenID Connect)
\n"
" Users will authenticate via an external identity provider (like "
-"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client "
-"Secret.
\n"
+"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret."
+"p>\n"
" \n"
" TOTP (Time-Based One-Time Password)
\n"
" Users will need to enter a rotating token from an authenticator "
@@ -1588,83 +1672,90 @@ msgstr ""
"p>\n"
" "
-#: gatekeeper/views.py:230
+#: gatekeeper/views.py:237
+#, python-format
+msgid ""
+"Cannot delete authentication method \"%(method)s\" because it is used by the "
+"following policies: %(policies)s."
+msgstr ""
+
+#: gatekeeper/views.py:243
msgid "Authentication Method deleted successfully."
msgstr "Metóda autentifikácie bola úspešne odstránená."
-#: gatekeeper/views.py:235
+#: gatekeeper/views.py:248
msgid "Delete Authentication Method"
msgstr "Odstrániť metódu autentifikácie"
-#: gatekeeper/views.py:237
+#: gatekeeper/views.py:250
#, python-format
msgid "Are you sure you want to delete the authentication method \"%(name)s\"?"
msgstr "Naozaj chcete odstrániť metódu autentifikácie \"%(name)s\"?"
-#: gatekeeper/views.py:287
+#: gatekeeper/views.py:303
msgid "Edit Allowed Domain"
msgstr "Upraviť povolenú doménu"
-#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202
+#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203
msgid "Add Allowed Domain"
msgstr "Pridať povolenú doménu"
-#: gatekeeper/views.py:297
+#: gatekeeper/views.py:313
msgid "Allowed Domain saved successfully."
msgstr "Povolená doména bola úspešne uložená."
-#: gatekeeper/views.py:319
+#: gatekeeper/views.py:335
msgid "Allowed Domain deleted successfully."
msgstr "Povolená doména bola úspešne odstránená."
-#: gatekeeper/views.py:324
+#: gatekeeper/views.py:340
msgid "Delete Allowed Domain"
msgstr "Odstrániť povolenú doménu"
-#: gatekeeper/views.py:326
+#: gatekeeper/views.py:342
#, python-format
msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?"
msgstr "Naozaj chcete odstrániť povolenú doménu \"%(domain)s\"?"
-#: gatekeeper/views.py:340
+#: gatekeeper/views.py:356
msgid "Edit Allowed Email"
msgstr "Upraviť povolený e-mail"
-#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199
+#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200
msgid "Add Allowed Email"
msgstr "Pridať povolený e-mail"
-#: gatekeeper/views.py:350
+#: gatekeeper/views.py:366
msgid "Allowed Email saved successfully."
msgstr "Povolený e-mail bol úspešne uložený."
-#: gatekeeper/views.py:372
+#: gatekeeper/views.py:388
msgid "Allowed Email deleted successfully."
msgstr "Povolený e-mail bol úspešne odstránený."
-#: gatekeeper/views.py:377
+#: gatekeeper/views.py:393
msgid "Delete Allowed Email"
msgstr "Odstrániť povolený e-mail"
-#: gatekeeper/views.py:379
+#: gatekeeper/views.py:395
#, python-format
msgid "Are you sure you want to delete the allowed email \"%(email)s\"?"
msgstr "Naozaj chcete odstrániť povolený e-mail \"%(email)s\"?"
-#: gatekeeper/views.py:393
+#: gatekeeper/views.py:409
msgid "Edit IP Address"
msgstr "Upraviť IP adresu"
-#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263
+#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264
#: templates/wireguard/wireguard_manage_peer.html:171
msgid "Add IP Address"
msgstr "Pridať IP adresu"
-#: gatekeeper/views.py:403
+#: gatekeeper/views.py:419
msgid "IP Address saved successfully."
msgstr "IP adresa bola úspešne uložená."
-#: gatekeeper/views.py:408
+#: gatekeeper/views.py:424
msgid ""
"\n"
"
IP Address List
\n"
@@ -1711,24 +1802,25 @@ msgstr ""
"(napr. „Kancelárska sieť“, „Blokovaný útočník“).\n"
" "
-#: gatekeeper/views.py:444
+#: gatekeeper/views.py:460
msgid "IP Address deleted successfully."
msgstr "IP adresa bola úspešne odstránená."
-#: gatekeeper/views.py:449
+#: gatekeeper/views.py:465
msgid "Delete IP Address"
msgstr "Odstrániť IP adresu"
-#: gatekeeper/views.py:451
+#: gatekeeper/views.py:467
#, python-format
msgid "Are you sure you want to delete the IP address \"%(address)s\"?"
msgstr "Naozaj chcete odstrániť IP adresu \"%(address)s\"?"
-#: intl_tools/forms.py:11 templates/accounts/login.html:36
+#: intl_tools/forms.py:11
msgid "Language"
msgstr "Jazyk"
-#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14
+#: intl_tools/forms.py:24 templates/accounts/login.html:35
+#: templates/template_parts/base_navbar.html:19
msgid "Change Language"
msgstr "Zmeniť jazyk"
@@ -2051,6 +2143,11 @@ msgstr "Prosím kontaktujte správcu systému ak si myslíte, že je to chyba."
msgid "Login"
msgstr "Prihlásiť sa"
+#: templates/accounts/login.html:40
+#: templates/template_parts/base_navbar.html:14
+msgid "Toggle Dark Mode"
+msgstr ""
+
#: templates/accounts/logout.html:11
msgid "You have been successfully logged out."
msgstr "Boli ste úspešne odhlásený."
@@ -2073,8 +2170,8 @@ msgid "In"
msgstr "Vstup"
#: templates/api_v2/api_documentation.html:49
-#: templates/gatekeeper/gatekeeper_list.html:166
-#: templates/gatekeeper/gatekeeper_list.html:211
+#: templates/gatekeeper/gatekeeper_list.html:167
+#: templates/gatekeeper/gatekeeper_list.html:212
#: templates/wireguard/apply_route_template.html:27
msgid "Type"
msgstr "Typ"
@@ -2084,13 +2181,13 @@ msgid "Required"
msgstr "Povinné"
#: templates/api_v2/api_documentation.html:62
-#: templates/gatekeeper/gatekeeper_list.html:75
+#: templates/gatekeeper/gatekeeper_list.html:76
#: templates/scheduler/scheduleprofile_form.html:175
msgid "Yes"
msgstr "Áno"
#: templates/api_v2/api_documentation.html:64
-#: templates/gatekeeper/gatekeeper_list.html:77
+#: templates/gatekeeper/gatekeeper_list.html:78
#: templates/scheduler/scheduleprofile_form.html:177
msgid "No"
msgstr "Nie"
@@ -2130,17 +2227,17 @@ msgid "Disabled"
msgstr "Zakázané"
#: templates/api_v2/list.html:68
-#: templates/app_gateway/app_gateway_list.html:154
-#: templates/app_gateway/application_details.html:71
-#: templates/app_gateway/application_details.html:121
+#: templates/app_gateway/app_gateway_list.html:162
+#: templates/app_gateway/application_details.html:99
+#: templates/app_gateway/application_details.html:150
#: templates/cluster/workers_list.html:77
#: templates/dns/static_host_list.html:74
-#: templates/gatekeeper/gatekeeper_list.html:89
-#: templates/gatekeeper/gatekeeper_list.html:132
-#: templates/gatekeeper/gatekeeper_list.html:177
-#: templates/gatekeeper/gatekeeper_list.html:225
-#: templates/gatekeeper/gatekeeper_list.html:242
-#: templates/gatekeeper/gatekeeper_list.html:294
+#: templates/gatekeeper/gatekeeper_list.html:90
+#: templates/gatekeeper/gatekeeper_list.html:133
+#: templates/gatekeeper/gatekeeper_list.html:178
+#: templates/gatekeeper/gatekeeper_list.html:226
+#: templates/gatekeeper/gatekeeper_list.html:243
+#: templates/gatekeeper/gatekeeper_list.html:295
#: templates/routing_templates/list.html:29
#: templates/scheduler/scheduleprofile_form.html:123
#: templates/scheduler/scheduleprofile_list.html:25
@@ -2172,78 +2269,83 @@ msgstr "Vyžadovať overenie pomocou špecifikovaných metód alebo skupín."
msgid "Deny all access."
msgstr "Odmietnuť všetok prístup."
-#: templates/app_gateway/app_gateway_list.html:12
-#: templates/app_gateway/app_gateway_list.html:30
+#: templates/app_gateway/app_gateway_list.html:13
+#: templates/app_gateway/app_gateway_list.html:31
msgid "Applications"
msgstr "Aplikácie"
-#: templates/app_gateway/app_gateway_list.html:18
+#: templates/app_gateway/app_gateway_list.html:19
msgid "Access Policies"
msgstr "Politiky prístupu"
-#: templates/app_gateway/app_gateway_list.html:34
-#: templates/app_gateway/app_gateway_list.html:60
+#: templates/app_gateway/app_gateway_list.html:35
+#: templates/app_gateway/app_gateway_list.html:68
#: templates/dns/static_host_list.html:70
msgid "Hosts"
msgstr "Hostiteľia"
-#: templates/app_gateway/app_gateway_list.html:42
+#: templates/app_gateway/app_gateway_list.html:44
+#: templates/app_gateway/app_gateway_list.html:50
msgid "Export Configuration"
msgstr "Exportovať konfiguráciu"
-#: templates/app_gateway/app_gateway_list.html:46
+#: templates/app_gateway/app_gateway_list.html:49
+msgid "Export is not available because Caddy is not enabled."
+msgstr ""
+
+#: templates/app_gateway/app_gateway_list.html:54
msgid "Add Application"
msgstr "Pridať aplikáciu"
-#: templates/app_gateway/app_gateway_list.html:61
+#: templates/app_gateway/app_gateway_list.html:69
msgid "Routes"
msgstr "Trasy"
-#: templates/app_gateway/app_gateway_list.html:80
-#: templates/app_gateway/application_details.html:39
+#: templates/app_gateway/app_gateway_list.html:88
+#: templates/app_gateway/application_details.html:47
msgid "Default (Deny)"
msgstr "Predvolené (Zamietnuť)"
-#: templates/app_gateway/app_gateway_list.html:90
+#: templates/app_gateway/app_gateway_list.html:98
msgid "No Applications found."
msgstr "Nenašli sa žiadne aplikácie."
-#: templates/app_gateway/app_gateway_list.html:102
+#: templates/app_gateway/app_gateway_list.html:110
msgid "Application"
msgstr "Aplikácia"
-#: templates/app_gateway/app_gateway_list.html:121
+#: templates/app_gateway/app_gateway_list.html:129
msgid "No Hosts found."
msgstr "Nenašli sa žiadni hostitelia."
-#: templates/app_gateway/app_gateway_list.html:129
+#: templates/app_gateway/app_gateway_list.html:137
msgid "Add Access Policy"
msgstr "Pridať politiku prístupu"
-#: templates/app_gateway/app_gateway_list.html:140
-#: templates/gatekeeper/gatekeeper_list.html:43
-#: templates/gatekeeper/gatekeeper_list.html:64
+#: templates/app_gateway/app_gateway_list.html:148
+#: templates/gatekeeper/gatekeeper_list.html:44
+#: templates/gatekeeper/gatekeeper_list.html:65
msgid "Groups"
msgstr "Skupiny"
-#: templates/app_gateway/app_gateway_list.html:141
+#: templates/app_gateway/app_gateway_list.html:149
msgid "Auth Methods"
msgstr "Metódy autentifikácie"
-#: templates/app_gateway/app_gateway_list.html:142
-#: templates/app_gateway/application_details.html:62
-#: templates/app_gateway/application_details.html:109
-#: templates/gatekeeper/gatekeeper_list.html:65
-#: templates/gatekeeper/gatekeeper_list.html:122
-#: templates/gatekeeper/gatekeeper_list.html:167
-#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/app_gateway/app_gateway_list.html:150
+#: templates/app_gateway/application_details.html:76
+#: templates/app_gateway/application_details.html:138
+#: templates/gatekeeper/gatekeeper_list.html:66
+#: templates/gatekeeper/gatekeeper_list.html:123
+#: templates/gatekeeper/gatekeeper_list.html:168
+#: templates/gatekeeper/gatekeeper_list.html:215
#: templates/scheduler/scheduleprofile_form.html:111
#: templates/scheduler/scheduleprofile_list.html:15
#: templates/wireguard/apply_route_template.html:28
msgid "Actions"
msgstr "Akcie"
-#: templates/app_gateway/app_gateway_list.html:169
+#: templates/app_gateway/app_gateway_list.html:177
msgid "No Access Policies found."
msgstr "Nenašli sa žiadne politiky prístupu."
@@ -2252,34 +2354,79 @@ msgstr "Nenašli sa žiadne politiky prístupu."
msgid "Back to List"
msgstr "Späť na zoznam"
-#: templates/app_gateway/application_details.html:41
+#: templates/app_gateway/application_details.html:15
+#: templates/app_gateway/application_details.html:59
+#: templates/app_gateway/application_details.html:91
+#: templates/app_gateway/application_details.html:94
+msgid "This application cannot be modified"
+msgstr ""
+
+#: templates/app_gateway/application_details.html:18
+#, fuzzy
+#| msgid "Application Route deleted successfully."
+msgid "This application cannot be deleted"
+msgstr "Trasa aplikácie bola úspešne odstránená."
+
+#: templates/app_gateway/application_details.html:49
msgid "Set Policy"
msgstr "Nastaviť politiku"
-#: templates/app_gateway/application_details.html:48
+#: templates/app_gateway/application_details.html:56
msgid "Application Hosts"
msgstr "Hostitelia aplikácie"
-#: templates/app_gateway/application_details.html:52
+#: templates/app_gateway/application_details.html:60
+#: templates/app_gateway/application_details.html:65
msgid "Add Host"
msgstr "Pridať hostiteľa"
-#: templates/app_gateway/application_details.html:86
+#: templates/app_gateway/application_details.html:115
msgid "No Hosts configured for this application."
msgstr "Pre túto aplikáciu nie sú konfigurovaní žiadni hostitelia."
-#: templates/app_gateway/application_details.html:92
+#: templates/app_gateway/application_details.html:121
msgid "Application Routes"
msgstr "Trasy aplikácie"
-#: templates/app_gateway/application_details.html:96
+#: templates/app_gateway/application_details.html:125
msgid "Add Route"
msgstr "Pridať trasu"
-#: templates/app_gateway/application_details.html:136
+#: templates/app_gateway/application_details.html:165
msgid "No Routes configured for this application."
msgstr "Pre túto aplikáciu nie sú konfigurované žiadne trasy."
+#: templates/app_gateway/caddy_disabled_alert.html:5
+#, fuzzy
+#| msgid "Cluster is not enabled"
+msgid "Caddy is not enabled"
+msgstr "Cluster nie je povolený"
+
+#: templates/app_gateway/caddy_disabled_alert.html:6
+msgid ""
+"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway "
+"container to be running. Please start the application using docker-"
+"compose-caddy.yml."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:7
+msgid ""
+"Depending on your custom firewall or proxy rules, the way you access "
+"wireguard_webadmin may change slightly after enabling Caddy."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:8
+msgid ""
+"Switching to Caddy is simple, but it may require a bit of time and attention "
+"to review your current setup."
+msgstr ""
+
+#: templates/app_gateway/caddy_disabled_alert.html:9
+#, fuzzy
+#| msgid "For more information, please visit:"
+msgid "For more information, see the discussion:"
+msgstr "Pre viac informácií navštívte prosím:"
+
#: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72
#: templates/scheduler/scheduleprofile_form.html:82
#: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78
@@ -2789,85 +2936,92 @@ msgstr ""
msgid "Create Port forwarding Rule"
msgstr "Vytvoriť pravidlo presmerovania portov"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:63
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:67
#: templates/gatekeeper/gatekeeper_user_form.html:43
msgid "View QR Code"
msgstr "Zobraziť QR kód"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:64
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:68
#: templates/gatekeeper/gatekeeper_user_form.html:44
msgid "Generate TOTP Secret"
msgstr "Generovať TOTP tajomstvo"
-#: templates/gatekeeper/gatekeeper_auth_method_form.html:93
-#: templates/gatekeeper/gatekeeper_user_form.html:73
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:105
+#: templates/gatekeeper/gatekeeper_user_form.html:81
msgid "Please enter a TOTP Secret first to generate the QR code."
msgstr "Najprv zadajte TOTP tajomstvo, aby ste vygenerovali QR kód."
-#: templates/gatekeeper/gatekeeper_list.html:18
+#: templates/gatekeeper/gatekeeper_auth_method_form.html:127
+#: templates/gatekeeper/gatekeeper_user_form.html:103
+#, fuzzy
+#| msgid "Error creating invite."
+msgid "Error generating QR code."
+msgstr "Chyba pri vytváraní pozvánky."
+
+#: templates/gatekeeper/gatekeeper_list.html:19
msgid "Gatekeeper Users"
msgstr "Používatelia Gatekeeper"
-#: templates/gatekeeper/gatekeeper_list.html:24
+#: templates/gatekeeper/gatekeeper_list.html:25
msgid "Allowed Emails & Domains"
msgstr "Povolené e-maily a domény"
-#: templates/gatekeeper/gatekeeper_list.html:30
+#: templates/gatekeeper/gatekeeper_list.html:31
msgid "IP Addresses"
msgstr "IP adresy"
-#: templates/gatekeeper/gatekeeper_list.html:40
+#: templates/gatekeeper/gatekeeper_list.html:41
#: templates/user_manager/peer_group_list.html:11
msgid "Users"
msgstr "Používatelia"
-#: templates/gatekeeper/gatekeeper_list.html:51
+#: templates/gatekeeper/gatekeeper_list.html:52
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
msgid "Add User"
msgstr "Pridať používateľa"
-#: templates/gatekeeper/gatekeeper_list.html:63
+#: templates/gatekeeper/gatekeeper_list.html:64
msgid "TOTP"
msgstr "TOTP"
-#: templates/gatekeeper/gatekeeper_list.html:104
+#: templates/gatekeeper/gatekeeper_list.html:105
msgid "No Gatekeeper Users found."
msgstr "Nenašli sa žiadni používatelia Gatekeeper."
-#: templates/gatekeeper/gatekeeper_list.html:111
+#: templates/gatekeeper/gatekeeper_list.html:112
msgid "Add Group"
msgstr "Pridať skupinu"
-#: templates/gatekeeper/gatekeeper_list.html:147
+#: templates/gatekeeper/gatekeeper_list.html:148
msgid "No Gatekeeper Groups found."
msgstr "Nenašli sa žiadne skupiny Gatekeeper."
-#: templates/gatekeeper/gatekeeper_list.html:156
+#: templates/gatekeeper/gatekeeper_list.html:157
msgid "Add Auth Method"
msgstr "Pridať metódu autentifikácie"
-#: templates/gatekeeper/gatekeeper_list.html:192
+#: templates/gatekeeper/gatekeeper_list.html:193
msgid "No Authentication Methods found."
msgstr "Nenašli sa žiadne metódy autentifikácie."
-#: templates/gatekeeper/gatekeeper_list.html:212
+#: templates/gatekeeper/gatekeeper_list.html:213
msgid "Identity"
msgstr "Identita"
-#: templates/gatekeeper/gatekeeper_list.html:213
-#: templates/gatekeeper/gatekeeper_list.html:275
+#: templates/gatekeeper/gatekeeper_list.html:214
+#: templates/gatekeeper/gatekeeper_list.html:276
msgid "Auth Method"
msgstr "Metóda autentifikácie"
-#: templates/gatekeeper/gatekeeper_list.html:257
+#: templates/gatekeeper/gatekeeper_list.html:258
msgid "No Allowed Emails or Domains found."
msgstr "Nenašli sa žiadne povolené e-maily ani domény."
-#: templates/gatekeeper/gatekeeper_list.html:276
+#: templates/gatekeeper/gatekeeper_list.html:277
msgid "Manage"
msgstr "Spravovať"
-#: templates/gatekeeper/gatekeeper_list.html:309
+#: templates/gatekeeper/gatekeeper_list.html:310
msgid "No IP Addresses found."
msgstr "Nenašli sa žiadne IP adresy."
@@ -3489,6 +3643,10 @@ msgstr "Vymazať peer"
msgid "Please type \\\"delete\\\" to remove peer configuration."
msgstr "Prosím napíšte \\\"delete\\\" pre odstránenie konfigurácie peer."
+#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15
+msgid "Display Name"
+msgstr "Zobrazovací názov"
+
#: templates/wireguard/wireguard_manage_server.html:27
msgid ""
"\n"
@@ -4468,5 +4626,25 @@ msgstr ""
"Neboli nájdené rozhrania|Neboli nájdené žiadne WireGuard rozhrania na "
"spracovanie."
+#~ msgid "This is a reserved system name."
+#~ msgstr "Toto je vyhradený systémový názov."
+
+#~ msgid ""
+#~ "TOTP must be combined with a Local Password or OpenID Connect "
+#~ "authentication method."
+#~ msgstr ""
+#~ "TOTP musí byť kombinované s metódou autentifikácie Lokálne heslo alebo "
+#~ "OpenID Connect."
+
+#~ msgid "Route identifier, used in export (e.g.: public_area)"
+#~ msgstr "Identifikátor trasy, použitý v exporte (napr.: public_area)"
+
+#~ msgid ""
+#~ "Caddy is not active. Configuration files were exported for debugging "
+#~ "purposes."
+#~ msgstr ""
+#~ "Caddy nie je aktívny. Konfiguračné súbory boli exportované na účely "
+#~ "ladenia."
+
#~ msgid "Global TOTP Before Authentication"
#~ msgstr "Globálne TOTP pred autentifikáciou"