From 83cc6051166d08fa01010825639812a72b7ac7ac Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Sat, 14 Mar 2026 08:52:45 -0300 Subject: [PATCH] update translations --- locale/de/LC_MESSAGES/django.mo | Bin 100011 -> 100400 bytes locale/de/LC_MESSAGES/django.po | 171 +++++++++++++------------ locale/es/LC_MESSAGES/django.mo | Bin 98250 -> 98652 bytes locale/es/LC_MESSAGES/django.po | 198 ++++++++++++++++------------- locale/fr/LC_MESSAGES/django.mo | Bin 100903 -> 101317 bytes locale/fr/LC_MESSAGES/django.po | 172 +++++++++++++------------ locale/pt_BR/LC_MESSAGES/django.mo | Bin 99923 -> 100301 bytes locale/pt_BR/LC_MESSAGES/django.po | 170 +++++++++++++------------ locale/sk/LC_MESSAGES/django.mo | Bin 99410 -> 99794 bytes locale/sk/LC_MESSAGES/django.po | 175 +++++++++++++------------ 10 files changed, 480 insertions(+), 406 deletions(-) diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 5362d0f0167b0c58c3e01ee0a6423a9be08d495a..9de482fa7344dd93d40b925ba35e8b01421519fd 100644 GIT binary patch delta 17182 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\n" "Language-Team: LANGUAGE \n" @@ -68,8 +68,8 @@ msgstr "" #: app_gateway/forms.py:129 app_gateway/forms.py:147 app_gateway/forms.py:195 #: app_gateway/forms.py:236 cluster/forms.py:67 cluster/forms.py:124 #: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:41 -#: gatekeeper/forms.py:75 gatekeeper/forms.py:137 gatekeeper/forms.py:224 -#: gatekeeper/forms.py:254 gatekeeper/forms.py:285 +#: gatekeeper/forms.py:75 gatekeeper/forms.py:139 gatekeeper/forms.py:226 +#: gatekeeper/forms.py:256 gatekeeper/forms.py:287 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -134,9 +134,9 @@ msgstr "Aktiviert" #: app_gateway/views.py:399 cluster/views.py:18 cluster/views.py:45 #: cluster/views.py:114 gatekeeper/views.py:23 gatekeeper/views.py:48 #: gatekeeper/views.py:78 gatekeeper/views.py:101 gatekeeper/views.py:131 -#: gatekeeper/views.py:154 gatekeeper/views.py:198 gatekeeper/views.py:257 -#: gatekeeper/views.py:287 gatekeeper/views.py:310 gatekeeper/views.py:340 -#: gatekeeper/views.py:363 gatekeeper/views.py:412 +#: gatekeeper/views.py:154 gatekeeper/views.py:202 gatekeeper/views.py:261 +#: gatekeeper/views.py:291 gatekeeper/views.py:314 gatekeeper/views.py:344 +#: gatekeeper/views.py:367 gatekeeper/views.py:416 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Zugriff verweigert" @@ -219,8 +219,8 @@ msgstr "Upstream" #: app_gateway/forms.py:41 app_gateway/forms.py:86 app_gateway/forms.py:130 #: app_gateway/forms.py:148 app_gateway/forms.py:196 app_gateway/forms.py:237 -#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:138 -#: gatekeeper/forms.py:225 gatekeeper/forms.py:255 gatekeeper/forms.py:286 +#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:140 +#: gatekeeper/forms.py:227 gatekeeper/forms.py:257 gatekeeper/forms.py:288 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -300,7 +300,7 @@ msgstr "Öffentlich" msgid "Protected" msgstr "Geschützt" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:45 gatekeeper/models.py:109 #: templates/app_gateway/access_policy_type_select.html:41 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" @@ -594,7 +594,7 @@ msgstr "" msgid "IP Lock" msgstr "IP-Sperre" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:196 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:198 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -877,7 +877,7 @@ msgstr "Statischer DNS" msgid "Invalid hostname." msgstr "Ungültiger Hostname." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:199 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:201 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1219,7 +1219,7 @@ msgstr "Firewall‑Einstellungen erfolgreich gespeichert" msgid "Username" msgstr "Benutzername" -#: gatekeeper/forms.py:18 gatekeeper/forms.py:269 +#: gatekeeper/forms.py:18 gatekeeper/forms.py:271 #: templates/gatekeeper/gatekeeper_list.html:62 #: templates/gatekeeper/gatekeeper_list.html:204 #: templates/wireguard/peer_list/peer_preview_modal.html:103 @@ -1265,85 +1265,89 @@ msgid "Global TOTP Secret" msgstr "Globales TOTP-Geheimnis" #: gatekeeper/forms.py:102 +msgid "Global TOTP Before Authentication" +msgstr "Globales TOTP vor der Authentifizierung" + +#: gatekeeper/forms.py:103 msgid "OIDC Provider URL" msgstr "OIDC-Anbieter-URL" -#: gatekeeper/forms.py:103 +#: gatekeeper/forms.py:104 msgid "OIDC Client ID" msgstr "OIDC-Client-ID" -#: gatekeeper/forms.py:104 +#: gatekeeper/forms.py:105 msgid "OIDC Client Secret" msgstr "OIDC-Client-Geheimnis" -#: gatekeeper/forms.py:155 +#: gatekeeper/forms.py:157 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:157 +#: gatekeeper/forms.py:159 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:159 +#: gatekeeper/forms.py:161 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:165 +#: gatekeeper/forms.py:167 msgid "Only one Local Password authentication method can be configured." msgstr "" "Es kann nur eine Authentifizierungsmethode mit lokalem Passwort konfiguriert " "werden." -#: gatekeeper/forms.py:168 +#: gatekeeper/forms.py:170 msgid "OIDC fields must be empty for TOTP authentication." msgstr "OIDC-Felder müssen für die TOTP-Authentifizierung leer sein." -#: gatekeeper/forms.py:170 +#: gatekeeper/forms.py:172 msgid "TOTP secret is required for TOTP authentication." msgstr "Das TOTP-Geheimnis ist für die TOTP-Authentifizierung erforderlich." -#: gatekeeper/forms.py:174 +#: gatekeeper/forms.py:176 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:179 +#: gatekeeper/forms.py:181 msgid "Invalid TOTP PIN." msgstr "Ungültige TOTP-PIN." -#: gatekeeper/forms.py:181 +#: gatekeeper/forms.py:183 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:184 +#: gatekeeper/forms.py:186 msgid "TOTP secret must be empty for OIDC authentication." msgstr "Das TOTP-Geheimnis muss für die OIDC-Authentifizierung leer sein." -#: gatekeeper/forms.py:186 +#: gatekeeper/forms.py:188 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:195 gatekeeper/forms.py:237 gatekeeper/forms.py:268 +#: gatekeeper/forms.py:197 gatekeeper/forms.py:239 gatekeeper/forms.py:270 msgid "Authentication Method" msgstr "Authentifizierungsmethode" -#: gatekeeper/forms.py:197 templates/gatekeeper/gatekeeper_list.html:257 +#: gatekeeper/forms.py:199 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" msgstr "Präfixlänge" -#: gatekeeper/forms.py:198 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:200 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 #: templates/gatekeeper/gatekeeper_list.html:258 msgid "Action" msgstr "Aktion" -#: gatekeeper/forms.py:238 templates/gatekeeper/gatekeeper_list.html:221 +#: gatekeeper/forms.py:240 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" msgstr "Domäne" @@ -1367,16 +1371,16 @@ msgstr "IP-Adressliste" msgid "Shared/global TOTP secret key" msgstr "Gemeinsamer/globaler TOTP-Geheimschlüssel" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:69 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:70 msgid "Per-user TOTP secret key" msgstr "Benutzerspezifischer TOTP-Geheimschlüssel" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:270 +#: gatekeeper/models.py:109 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" msgstr "Zulassen" @@ -1446,121 +1450,130 @@ msgstr "Authentifizierungsmethode erfolgreich gespeichert." #: gatekeeper/views.py:175 msgid "" "\n" -"
Authentication Types
\n" +"

Authentication Types

\n" "

Select how users will authenticate through this method.

\n" -"
    \n" -"
  • Local Password: Users will authenticate " -"using a standard username and password stored locally. Only one of this type " -"can be created.
  • \n" -"
  • TOTP (Time-Based One-Time Password): Users " -"will need to enter a rotating token from an authenticator app. Requires " -"setting a Global TOTP Secret.
  • \n" -"
  • OIDC (OpenID Connect): Users will " -"authenticate via an external identity provider (like Keycloak, Google, or " -"Authelia). Requires Provider URL, Client ID, and Client Secret.
  • \n" -"
\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. Requires setting a Global TOTP Secret.
If Global TOTP " +"Before Authentication is enabled, the PIN is required before the " +"username and password to help combat bruteforce attacks.

\n" " " msgstr "" "\n" -"
Authentifizierungstypen
\n" +"

Authentifizierungstypen

\n" "

Wählen Sie aus, wie sich Benutzer über diese Methode " "authentifizieren.

\n" -"
    \n" -"
  • Lokales Passwort: Benutzer authentifizieren " -"sich mit einem lokal gespeicherten Standard-Benutzernamen und Passwort. Es " -"kann nur einer dieser Typen erstellt werden.
  • \n" -"
  • TOTP (Time-Based One-Time Password): " -"Benutzer müssen ein rotierendes Token aus einer Authenticator-App eingeben. " -"Erfordert die Festlegung eines globalen TOTP-Geheimnisses.
  • \n" -"
  • OIDC (OpenID Connect): Benutzer " -"authentifizieren sich über einen externen Identitätsanbieter (wie Keycloak, " -"Google oder Authelia). Erfordert Anbieter-URL, Client-ID und Client-" -"Geheimnis.
  • \n" -"
\n" +" \n" +"
Lokales Passwort
\n" +"

Benutzer authentifizieren sich mit einem lokal gespeicherten " +"Standard-Benutzernamen und Passwort. Es kann nur einer dieser Typen " +"erstellt werden.

\n" +" \n" +"
OIDC (OpenID Connect)
\n" +"

Benutzer authentifizieren sich über einen externen " +"Identitätsanbieter (wie Keycloak, Google oder Authelia). Erfordert Anbieter-" +"URL, Client-ID und Client-Geheimnis.

\n" +" \n" +"
TOTP (Zeitbasiertes Einmalpasswort)
\n" +"

Benutzer müssen ein rotierendes Token aus einer Authenticator-App " +"eingeben. Erfordert die Festlegung eines globalen TOTP-Geheimnisses.
Wenn " +"Globales TOTP vor der Authentifizierung aktiviert ist, wird " +"die PIN vor dem Benutzernamen und dem Passwort benötigt, um Brute-Force-" +"Angriffe zu bekämpfen.

\n" " " -#: gatekeeper/views.py:206 +#: gatekeeper/views.py:210 msgid "Authentication Method deleted successfully." msgstr "Authentifizierungsmethode erfolgreich gelöscht." -#: gatekeeper/views.py:211 +#: gatekeeper/views.py:215 msgid "Delete Authentication Method" msgstr "Authentifizierungsmethode löschen" -#: gatekeeper/views.py:213 +#: gatekeeper/views.py:217 #, 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:263 +#: gatekeeper/views.py:267 msgid "Edit Allowed Domain" msgstr "Zulässige Domäne bearbeiten" -#: gatekeeper/views.py:266 templates/gatekeeper/gatekeeper_list.html:186 +#: gatekeeper/views.py:270 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" msgstr "Zulässige Domäne hinzufügen" -#: gatekeeper/views.py:273 +#: gatekeeper/views.py:277 msgid "Allowed Domain saved successfully." msgstr "Zulässige Domäne erfolgreich gespeichert." -#: gatekeeper/views.py:295 +#: gatekeeper/views.py:299 msgid "Allowed Domain deleted successfully." msgstr "Zulässige Domäne erfolgreich gelöscht." -#: gatekeeper/views.py:300 +#: gatekeeper/views.py:304 msgid "Delete Allowed Domain" msgstr "Zulässige Domäne löschen" -#: gatekeeper/views.py:302 +#: gatekeeper/views.py:306 #, 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:316 +#: gatekeeper/views.py:320 msgid "Edit Allowed Email" msgstr "Zulässige E-Mail bearbeiten" -#: gatekeeper/views.py:319 templates/gatekeeper/gatekeeper_list.html:183 +#: gatekeeper/views.py:323 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" msgstr "Zulässige E-Mail hinzufügen" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:330 msgid "Allowed Email saved successfully." msgstr "Zulässige E-Mail erfolgreich gespeichert." -#: gatekeeper/views.py:348 +#: gatekeeper/views.py:352 msgid "Allowed Email deleted successfully." msgstr "Zulässige E-Mail erfolgreich gelöscht." -#: gatekeeper/views.py:353 +#: gatekeeper/views.py:357 msgid "Delete Allowed Email" msgstr "Zulässige E-Mail löschen" -#: gatekeeper/views.py:355 +#: gatekeeper/views.py:359 #, 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:369 +#: gatekeeper/views.py:373 msgid "Edit IP Address" msgstr "IP-Adresse bearbeiten" -#: gatekeeper/views.py:372 templates/gatekeeper/gatekeeper_list.html:247 +#: gatekeeper/views.py:376 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "IP‑Adresse hinzufügen" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:383 msgid "IP Address saved successfully." msgstr "IP-Adresse erfolgreich gespeichert." -#: gatekeeper/views.py:384 +#: gatekeeper/views.py:388 msgid "" "\n" "
IP Address List
\n" @@ -1607,15 +1620,15 @@ msgstr "" "„Büronetzwerk“, „Blockierter Angreifer“).

\n" " " -#: gatekeeper/views.py:420 +#: gatekeeper/views.py:424 msgid "IP Address deleted successfully." msgstr "IP-Adresse erfolgreich gelöscht." -#: gatekeeper/views.py:425 +#: gatekeeper/views.py:429 msgid "Delete IP Address" msgstr "IP-Adresse löschen" -#: gatekeeper/views.py:427 +#: gatekeeper/views.py:431 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 570390198042b4e7085f419263c8aa703ee13be9..29a3aff76ad0b76405c0cfd285497e8bea4f7a8e 100644 GIT binary patch delta 17144 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 WEOQlD6#a)B+LpAlb92wAy8i+5%#!f{ delta 16664 zcmZwOcYIIh|Nrsx4oSo&h!G?bAy%wdF%n|ONNbN6rM1w2B*oO8|den&VzCg8|RfA?a}^fMfeEa@C4 z6vyRtoP6mW=dZGgI!^Nh$JyoQILWw}I@uB(=S|9+>N`$f$^nfWC$GnG1~+k>i}-0% z$N7Nk`ZRZ(F?b7yV!vd^DaiRhu>z)l({aZ7JFZiuh2spP!p^pilY<+_wsV|0l&juSY_abgHGrP(F%11yHCkn5e3m;=vZLA-?pFo

-j-wv*3#vi4Q8##r zc`(C=j*}4!qk2>VH4^1f9g4?~F%g+b=Q!$lKcVXV_9641pUhnXYH7wXrpFPeij`0m z>!8+SGHMFOU?eWWB6t8b)YmZ_Gmka*D}(B3ebh*`LUphYszbxZGL&ItCK1q_uf}9N zWh)jPXC7P*%MkC1!8i@0a4AOOQPd6ZqwbS#JnI5WqNXqz)v#_@7$=}_8_{eeU;&6<`-B<-5q3%;=qPgyERNP%o zM%&>sw#QsdSZ#b4*JB#S<6D!MS6qS`!k2UyN#v!O79*ers4Ak0KiMoCZ2H zjssXx=TY~~I7K7R{AVMh9^|%0q8d;E{joXfL9H+lyP+P~2es`cq2_iDs$n}ZGoC{a7r8pQC!d8+HFP_WU(3^RF8}wkNVrH!TgvI>cLHBbcJBpaSNiTpP9eTibG9%t?6+s-ZJbBeVrIqCcS4*mc*Q@SkZ~SP<2dim0B~LtXd= z>Os9w4R%pIpN;C#0#yC=)*YykJ%k#Go2YuvPz}nMYRYaYo2h~7SyRk_Em0Sypjz4& z)qqLXg{U>L8AEUn>iV;&2VKTZcpuf!C9}-^R-#5`D+bdK=X)Etgu3u=)Z$Aw+YD(0 z=Am2_^;yx}#(Se0^dV|B&qQt0WvGU4M(vV))?=uV{n?(sfg#%ePs!xwM0UP)sAW;8 z3#+1TSO@hUNVetH*6yf=4MII|5|+f-_WS|VeNUklcD1;jN zC{zPtP(7@Q>S0q1!4#~9Lr^2O5%u2Ki_P#itd8a8nFjPjHFO*%;#|~c#$|L{lPNsk zeCiFwPL#jH#u&Z8tk(BX4VZ$VxBv^_4%7pGMm4n9LNgN8t&K5`cstbMoQZ95F=|Bq zUC8*W$LSX_6qp5dqr6xaOQYf`sD}1L7x$p*C46DlN-NY0X9yO=d8jGbj+)Z%P;-AC zwJYvm80OG-u}CuI7n`27#^RI*qvmoxM&Ng-)qNYa>K|ehdcHK*7e_Uq399}e)YPP+ zdb+}vH=r7{2i38kTr#@xC5-a$^%yl&S(ch@lMgjQh0q_1p&C#cb%ScCsi}(z*b>7q z6=QHK7Q*YO>jIaV2IWFs=Z2C|#Zp)SJ6JzM4f%dl145Vc9RQ1>AAXFw;bheL+1ACV z4y;Cvz!ubEK8%`@lc?4In>p_~kH`cP2v}jhXk*a#t}@tLZM8C<3`wnZ*-_YCu~I!``Sj*ksIr(=Z6< zpnAFl%i#u8kAFvX=mF}%&oKfstu~7`230Q+GiWupB$E+SFcbDfwfsHQ1IM91eu|mU zi>kj6^?+3vfZI{KVh`rUGpOx)*P3~a8M$a{4RqDhWHLqYEz|`QP(An(GvjJhy{)M8 zM^F#Eh8meW=<6}6q0ccLde)j3k3VLn9EzDR+LmM2GX4tGCZI*t6!T#+YRGz{-ds~L z440u^JclqpUcqR5ff|Y8>rDMBSb}mhRD(yL-V3Ry`+tSC@rQMG|L0t99#9$e&TfO{ zu^;MzU!aC`7na5|sCwx)m21VVs(7qC8GyzMZJh_ zp&pcdquCA7sCRxZ)C0$$hIkfgh!+w7gPf# zqHeSnHPpMY5T3E|N0>-C@LMx7Nm!3^XVg?LM>Sw0YO3AcWHb~9u?${DoyfMw3|$`7 zHi|+$s6T3?rl1-;8w=uM8~+xy$iBx)__K{?-D~cf57m$`q@L@PAQMWUl0ESz>H!^5 z`?!ZK_rt=Jhoe^WY}A7fpoaVk>OK!q9muiIm=`t0g;5?NHShwC!vY6*jpHIr2fO1M z)V9p|z4<$$2I!U`Fon!I+=j!j$5Do!hWv*0C|^5frlibqGv`$?f_QBV$G0&nPPFAz z)YNT5P1$bLNL@lr(QVY)$@l}~uek~S!3szb$D+6fGvZ0qoL;~Jc+(p2 zqiJXnj3V9%b$$ZszKc;Ku^M%sjhGX6qSo3EE*Z7t3aUr9P!D>9>apKR78YhlEv7A~ z9v(y0{~h(9zc4#KvId+oJrBX0#LJ-`n20&BjV-&q$mqfkP&b~6akvDvYA<6}EcBDH zG-^((TRWf{HWG{D=cvzu9rpYg)RaC(jnF?h9>Y)j;;yrtjC#7-x((IBL#X|I7Q5pU z)Pp;op%*O9Q5eXb_x{XhKOQ;9kLrG`@Qb`fDG$F)uc^2H3J)Uw_^RW4!u9|B$wxg- zxTfvM{D)s>yHRl&CgHUkydapginsWogNpI@_zNa(Z~>Q7uKj=y7|!3sBE*M1sjc6s*E=a`O*aCB5 zFD!*Fy1MZiGP>a}sKs;{1Mr58-$Pya6t%juc*+42W~_4^t3Ji zfvWG}7eTsTcGPnUAT#Gg<8X`#bxn^~63`HBLOu8}YDmwadiWn|F-Gt!EbW#A^feI6 zQ0|86u@_6=CXB`ls87MbLd-qZM2+}h)b)#8GTNV;P%S=yYRFHh9^ORVAah}l^ETGO zOt=c`;MZ6i|3PiL8ewK`+n^pa9yR0}F$TXwHTap0yT!xJT*RXmS9jD9e~elaGf@p$ zfNJr#sGgm~c>EU=u|^S(??Y;g^$5N}JZFT*_aW3Bn^0bgdZj-=Uh%F|I@06&^y-D` z(Ne61H?Sr~vlY5y4@}16$gXw5_^4EQ5o!efM!oA}i(Pl(KQH!q(YAS2mcrq5F{1$3geS%YQ zI?lq#5;Raf*+oW+<0$IJekIM&2cgzN4%9v`hFX;IsCsXqrlc2Ysz##bcpR!Bn^7G( zgc^Z+sD@@NWkx7Jy4pUmWZuMNtcXidLw63fsBWM}B7JF(??phjpN>J4}?#x--BsjOLq4N$9jEUL$cu{1tFO+`4L zDC$XNR6`r0c1>GUgGQlt$4m^uZ&5uxV$c6>eU6oh=W@%N?U#fa>H(-5O-A)}sVyJC zT9hwhV=Tn)(37zjCgD!hA`7Z$8k!SBDHliGw=PCuXVgf2gcZ=8M@AJ-pdNS|waBvY zQKh*ni+Zy)LQPdq)T?wfhT#;{_3N!iQETD`s^|AnYa*zUiRVGxuMjfDu2X}IhOz-_ zuG^r7c!Z5lM)hnS>cLAwaxmVMr@#U9O~nECaNQ=P-|zOJ)bVl z)X$BswplS7D37`@5jA9OP}{4swGV1l55q7VgKEf^s1ZrSdUzbwk=)hI?kI_GQ*MS0 z@oUrwIW^e-nxld>%%@yc)D7Onmbe9*VwRd7-!Be2U~|e}V;Bb3GCe7d+NRY|i?|1N z!ilK0aUC@UFRj_*&9)DZcTEpd2=t{wFI3NeK`pw=s2<-yjm!howh2ry@i*5HU zi+W(5+Ga7AM%8bIYT#JZTH1)}_fdM!iGk9nKYVmzs z&*P-WS*Y@S)FNDiS}U6{3x0!I)JL%qUd1Sksc+UmE2LwtvxtmtbP#pnY1FE{g1X>e z)QChhFg;7czLbZfrsf)U!~3YIYt_(nBn35v15x$fw~j~Mf2!|1`+o%)-<+UU?S52G z&Y>>+6JzlnYKWs6nQuCAsO!d}MsOzTvtR`_z@w=5L+-}rOcYdQeSOJ#7j@xF)Qtj~nvdtasCp5o>nos!JPGyAZ;2YguBg@C2lYms zi0bItrtE)x%zjHC3~!+tkhz(8Pz34?7>lac0`&kFwPq%wdYp>dC2LWO@f51TXHgBj zY~%N=k5M0P|2AX)YnA3{ZsxWOs$9pG+oK=lcTo)(gbBC+^@_fXWief{IbRXA{W_uI zlTkh2h3ffP8-IaOlw;gC%!RE`Z>|rqK7N6^(G66^Ja3wjsex)h3)K0Us43isW$+g2 zf%#jQDXN5;f&^=0)X23&O@Z5ujCwp2HS|+48JA%^K1DU4YD@D*>x@k(k3l`?1ZoQY zLJhrND>L*NP!GsvErQxrvDO6SGr)D4kg3UuUZ`EL61BSTpoTECwVA^vn4WS+R71O> z7Ts{v)O?N=aTjXN|3+NDgh zszLX#A!h7uI_S0_qZ>^}4cU6s5FbEotFx$vq<`C(88vjdP-~(PYE2}e9xxmWqZf-{ z8fq<_LA^I_qZ$_Xjz_6B@ zp>t-T-kjI59Tw|j=5`Ef$d95%)5$$h&_~Tio5=_JJ_sq`&r%`JsW{4TuIEAj18YUwDiT#c4jW*KEiXqliSG!qndg4|KtlSMq@yqP!*_8Nb!uqtbi7YmPH;0; z@g|fj;AW4?V4!@S?OQFMS(fO04H-L`cx&A+s zb&issW$SzKss5$I3WEDcOGq&UAEJ(`Ns0pb^hk8-cBqW-+$mxtOT*q%5cmfeunZ9 zU4uIAVF2a1q+FyV(m8X=_di^6P}ZTn`YCnwQn~NPD(FgPJ}2kmbJA3jj;i*?{cxha zSn*zzbJ}y~aXqOO=kt*obABP^h4>Z5l1>oM{@V4i~&P5T^`=;-!0B#}njedHVN#+N8K?tUiW>O(siF2hXzv0~#8xh`}QZGu| zQO6yO!73!avpK!Jo=U;)T%r|-JR|A&h%gjXq0qUiBh4crBZ;igU zJz1v(=X6xVtH}2&rw(bljq7)rBW->LasC%rio@sI|Bhldzne<8i7r5W9T-o145=jP zJ9~ps#4|HrnTT~Jc7XC?dycH{A4cr+-mer~OKW7q!5u`6k`VcOH`c?H4@=>HEUmr37{*YUGA zN0neV$(9t+&yXpkU>h4xej53j+-10p{rOt`MVxof7!~%D6gi1hx7^gI;1S*y{dyc_=4v94a{BgWk}69Hx2uc zigKyuNSUZqkfh@*<#$Zh*-Y#O>2qT9@qvw> zq^z$CQ*k){hXXm^pL}&(NckmJ!YI;r#E;`H(r4s-2haB%ZK-&g6YVIiBCR1`$(-{2 z`GT^J3^*SfU=Y_VCtrv(h!jFuM@!CSBzYL>JJ_5wQ!&bos56gz3F@sTc|P%mR||0m z5pGWLT~2MoSH}>0%l_6yxRW|Mb{m|*)^BZ{m-hT4oJ?#2>1XQvW8-HjZ?$#prL~<2 zocxqhZBlm|T}tdQ`NgCeTrdTTVGKz}1}txH>hFD4tw2MMJ+sSHaDJfN&erHdK8*B) zw1wDG>SQEek^Dd8H50cfXT-}zfcZl>Q`40TR}3SxMOR_Q!Y-@@utD| z=ljIYk$$(aVXvM0>a~X*AYaCof3bCPQ+Dk=6-q~WlOF@J=Cz zn2sT&Bwvmxx3P`X>uqBrFq-%p%*1MZbsV8iBML2FyXPZ)*Y8Z_#{^s3n&&7VBYo%1 zQX|C8!I>~hIs(X_xA~fs=aF=Wjl|x?*N@D^z9mg3_y_KP?c^5nH;Kh@zn-K5ln+tX zG0M6dTk;|5>?OE?6iDhp<%ZaolY4B%6O?s)#JNJm3SfECMPe850kN-qH5}hR3>rmj z9p%}mV=ZY3si!wf%@F_5L|t!m&5}LeA=i;>J993B9mf;IZc!di{1@`Sp^mHMb&Rnp z-@)c{kuOR9I*!Bkuhp4K{)%^3%>wRTa%D*Sxnm8|4r>2R((yg&Zm z{5nz)Pp^+Uicqg8`9RWL8!KzAffq^ZspB=(oyO#KTq2%^SMU(F^K-m);&Z!uC0jcpRxPvCr@?EJpg6e14LSScCI5*Z2|pnpB(=O?)Tm zCqHIt5P@`dCGE5~pT)`J-uv+(ZANl7g{0#yUZ+N&Ei2ZA@(9X#uo9^av8R|Ds}nDd z;h3IS7aWR5(YvR9iL^-x?-fXE+PPmA@5>G$-U-99dLug~&iKz$Fn?12x4QHRYu;th zprQQ-cB>vUXz;-P{obirEv%)tY{wAqnvN-{OZ+{d-p46LgZ_8UTcT6%)W!auLf#@N zAsPP{HkWix`5Ct19k9_IJne45o;^53A;%NaZwytf|K)zb^s z>ECbgz%GNj@7vfVtdCmqS_ArcJ3pFc9`5&~^8b5EA8*4aWB)%-@8d1|c)NFc-{M=o Q4Df`;Z~3#HXGpdG12snQHvj+t diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index c5c70cd..5f67f4d 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-13 20:12-0300\n" +"POT-Creation-Date: 2026-03-14 08:47-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,8 +68,8 @@ msgstr "" #: app_gateway/forms.py:129 app_gateway/forms.py:147 app_gateway/forms.py:195 #: app_gateway/forms.py:236 cluster/forms.py:67 cluster/forms.py:124 #: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:41 -#: gatekeeper/forms.py:75 gatekeeper/forms.py:137 gatekeeper/forms.py:224 -#: gatekeeper/forms.py:254 gatekeeper/forms.py:285 +#: gatekeeper/forms.py:75 gatekeeper/forms.py:139 gatekeeper/forms.py:226 +#: gatekeeper/forms.py:256 gatekeeper/forms.py:287 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -134,9 +134,9 @@ msgstr "Habilitado" #: app_gateway/views.py:399 cluster/views.py:18 cluster/views.py:45 #: cluster/views.py:114 gatekeeper/views.py:23 gatekeeper/views.py:48 #: gatekeeper/views.py:78 gatekeeper/views.py:101 gatekeeper/views.py:131 -#: gatekeeper/views.py:154 gatekeeper/views.py:198 gatekeeper/views.py:257 -#: gatekeeper/views.py:287 gatekeeper/views.py:310 gatekeeper/views.py:340 -#: gatekeeper/views.py:363 gatekeeper/views.py:412 +#: gatekeeper/views.py:154 gatekeeper/views.py:202 gatekeeper/views.py:261 +#: gatekeeper/views.py:291 gatekeeper/views.py:314 gatekeeper/views.py:344 +#: gatekeeper/views.py:367 gatekeeper/views.py:416 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Acceso denegado" @@ -218,8 +218,8 @@ msgstr "Upstream" #: app_gateway/forms.py:41 app_gateway/forms.py:86 app_gateway/forms.py:130 #: app_gateway/forms.py:148 app_gateway/forms.py:196 app_gateway/forms.py:237 -#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:138 -#: gatekeeper/forms.py:225 gatekeeper/forms.py:255 gatekeeper/forms.py:286 +#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:140 +#: gatekeeper/forms.py:227 gatekeeper/forms.py:257 gatekeeper/forms.py:288 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -258,7 +258,9 @@ msgstr "Métodos de autenticación" #: app_gateway/forms.py:170 msgid "User groups can only be used with local user authentication." -msgstr "Los grupos de usuarios solo se pueden utilizar con la autenticación de usuarios locales." +msgstr "" +"Los grupos de usuarios solo se pueden utilizar con la autenticación de " +"usuarios locales." #: app_gateway/forms.py:180 templates/app_gateway/app_gateway_list.html:56 #: templates/app_gateway/application_details.html:31 @@ -296,7 +298,7 @@ msgstr "Público" msgid "Protected" msgstr "Protegido" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:45 gatekeeper/models.py:109 #: templates/app_gateway/access_policy_type_select.html:41 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" @@ -351,8 +353,8 @@ msgstr "" "
  • Nombre para mostrar: Un nombre amigable y " "legible para fines de visualización.
  • \n" "
  • Upstream: La URL de destino a la que se " -"reenviarán las solicitudes (ej: http://10.188.18.27:3000). " -"Debe comenzar con http:// o https://.
  • \n" +"reenviarán las solicitudes (ej: http://10.188.18.27:3000). Debe " +"comenzar con http:// o https://.\n" " \n" " " @@ -434,7 +436,8 @@ msgid "" msgstr "" "\n" "
    Política de denegación
    \n" -"

    Una política de denegación bloquea todo el acceso a las rutas coincidentes.

    \n" +"

    Una política de denegación bloquea todo el acceso a las rutas " +"coincidentes.

    \n" " " #: app_gateway/views.py:240 @@ -455,10 +458,15 @@ msgid "" msgstr "" "\n" "
    Política protegida
    \n" -"

    Una política protegida requiere que los usuarios se autentiquen antes de acceder a la aplicación.

    \n" +"

    Una política protegida requiere que los usuarios se " +"autentiquen antes de acceder a la aplicación.

    \n" "
      \n" -"
    • Grupos permitidos: Limita el acceso a grupos de usuarios específicos. Nota: El uso de grupos requiere seleccionar un Método de autenticación de tipo \"Contraseña local\".
    • \n" -"
    • Métodos de autenticación: Especifique qué métodos pueden utilizar los usuarios para autenticarse (por ejemplo, Contraseña local, TOTP, OIDC).
    • \n" +"
    • Grupos permitidos: Limita el acceso a " +"grupos de usuarios específicos. Nota: El uso de grupos requiere seleccionar " +"un Método de autenticación de tipo \"Contraseña local\".
    • \n" +"
    • Métodos de autenticación: Especifique " +"qué métodos pueden utilizar los usuarios para autenticarse (por ejemplo, " +"Contraseña local, TOTP, OIDC).
    • \n" "
    \n" " " @@ -470,7 +478,9 @@ msgstr "Política de acceso eliminada correctamente." msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." -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." +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:278 msgid "Delete Access Policy" @@ -577,7 +587,7 @@ msgstr "¿Está seguro de que desea eliminar la ruta \"%(name)s\" (%(path)s)?" msgid "IP Lock" msgstr "Bloqueo de IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:196 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:198 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -860,7 +870,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:199 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:201 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1199,7 +1209,7 @@ msgstr "Configuración de firewall guardada correctamente" msgid "Username" msgstr "Usuario" -#: gatekeeper/forms.py:18 gatekeeper/forms.py:269 +#: gatekeeper/forms.py:18 gatekeeper/forms.py:271 #: templates/gatekeeper/gatekeeper_list.html:62 #: templates/gatekeeper/gatekeeper_list.html:204 #: templates/wireguard/peer_list/peer_preview_modal.html:103 @@ -1245,82 +1255,86 @@ msgid "Global TOTP Secret" msgstr "Secreto TOTP global" #: gatekeeper/forms.py:102 +msgid "Global TOTP Before Authentication" +msgstr "TOTP global antes de la autenticación" + +#: gatekeeper/forms.py:103 msgid "OIDC Provider URL" msgstr "URL del proveedor OIDC" -#: gatekeeper/forms.py:103 +#: gatekeeper/forms.py:104 msgid "OIDC Client ID" msgstr "ID de cliente OIDC" -#: gatekeeper/forms.py:104 +#: gatekeeper/forms.py:105 msgid "OIDC Client Secret" msgstr "Secreto de cliente OIDC" -#: gatekeeper/forms.py:155 +#: gatekeeper/forms.py:157 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:157 +#: gatekeeper/forms.py:159 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:159 +#: gatekeeper/forms.py:161 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:165 +#: gatekeeper/forms.py:167 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:168 +#: gatekeeper/forms.py:170 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:170 +#: gatekeeper/forms.py:172 msgid "TOTP secret is required for TOTP authentication." msgstr "El secreto TOTP es obligatorio para la autenticación TOTP." -#: gatekeeper/forms.py:174 +#: gatekeeper/forms.py:176 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Proporcione un PIN para validar el secreto TOTP." -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:181 msgid "Invalid TOTP PIN." msgstr "PIN TOTP no válido." -#: gatekeeper/forms.py:181 +#: gatekeeper/forms.py:183 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:184 +#: gatekeeper/forms.py:186 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:186 +#: gatekeeper/forms.py:188 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:195 gatekeeper/forms.py:237 gatekeeper/forms.py:268 +#: gatekeeper/forms.py:197 gatekeeper/forms.py:239 gatekeeper/forms.py:270 msgid "Authentication Method" msgstr "Método de autenticación" -#: gatekeeper/forms.py:197 templates/gatekeeper/gatekeeper_list.html:257 +#: gatekeeper/forms.py:199 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" msgstr "Longitud del prefijo" -#: gatekeeper/forms.py:198 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:200 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 #: templates/gatekeeper/gatekeeper_list.html:258 msgid "Action" msgstr "Acción" -#: gatekeeper/forms.py:238 templates/gatekeeper/gatekeeper_list.html:221 +#: gatekeeper/forms.py:240 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" msgstr "Dominio" @@ -1344,15 +1358,15 @@ msgstr "Lista de direcciones IP" msgid "Shared/global TOTP secret key" msgstr "Clave secreta TOTP compartida/global" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:69 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:70 msgid "Per-user TOTP secret key" msgstr "Clave secreta TOTP por usuario" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:270 +#: gatekeeper/models.py:109 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" msgstr "Permitir" @@ -1421,121 +1435,129 @@ msgstr "Método de autenticación guardado correctamente." #: gatekeeper/views.py:175 msgid "" "\n" -"
    Authentication Types
    \n" +"

    Authentication Types

    \n" "

    Select how users will authenticate through this method.

    \n" -"
      \n" -"
    • Local Password: Users will authenticate " -"using a standard username and password stored locally. Only one of this type " -"can be created.
    • \n" -"
    • TOTP (Time-Based One-Time Password): Users " -"will need to enter a rotating token from an authenticator app. Requires " -"setting a Global TOTP Secret.
    • \n" -"
    • OIDC (OpenID Connect): Users will " -"authenticate via an external identity provider (like Keycloak, Google, or " -"Authelia). Requires Provider URL, Client ID, and Client Secret.
    • \n" -"
    \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. Requires setting a Global TOTP Secret.
    If Global TOTP " +"Before Authentication is enabled, the PIN is required before the " +"username and password to help combat bruteforce attacks.

    \n" " " msgstr "" "\n" -"
    Tipos de autenticación
    \n" +"

    Tipos de autenticación

    \n" "

    Seleccione cómo se autenticarán los usuarios a través de este " "método.

    \n" -"
      \n" -"
    • Contraseña local: los usuarios se " -"autenticarán con un nombre de usuario y una contraseña estándar almacenados " -"localmente. Solo se puede crear uno de este tipo.
    • \n" -"
    • TOTP (Contraseña de un solo uso basada en el " -"tiempo): los usuarios deberán introducir un token rotativo de una " -"aplicación de autenticación. Requiere configurar un secreto TOTP global.\n" -"
    • OIDC (OpenID Connect): los usuarios se " -"autenticarán a través de un proveedor de identidad externo (como Keycloak, " -"Google o Authelia). Requiere la URL del proveedor, el ID de cliente y el " -"secreto de cliente.
    • \n" -"
    \n" +" \n" +"
    Contraseña local
    \n" +"

    Los usuarios se autenticarán con un nombre de usuario y una " +"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 la URL del " +"proveedor, el ID de cliente y el secreto de cliente.

    \n" +" \n" +"
    TOTP (Contraseña de un solo uso basada en el tiempo)
    \n" +"

    Los usuarios deberán introducir un token rotativo de una " +"aplicación de autenticación. Requiere configurar un secreto TOTP global. " +"
    Si TOTP global antes de la autenticación está " +"habilitado, se requiere el PIN antes del nombre de usuario y la contraseña " +"para ayudar a combatir los ataques de fuerza bruta.

    \n" " " -#: gatekeeper/views.py:206 +#: gatekeeper/views.py:210 msgid "Authentication Method deleted successfully." msgstr "Método de autenticación eliminado correctamente." -#: gatekeeper/views.py:211 +#: gatekeeper/views.py:215 msgid "Delete Authentication Method" msgstr "Eliminar método de autenticación" -#: gatekeeper/views.py:213 +#: gatekeeper/views.py:217 #, 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:263 +#: gatekeeper/views.py:267 msgid "Edit Allowed Domain" msgstr "Editar dominio permitido" -#: gatekeeper/views.py:266 templates/gatekeeper/gatekeeper_list.html:186 +#: gatekeeper/views.py:270 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" msgstr "Añadir dominio permitido" -#: gatekeeper/views.py:273 +#: gatekeeper/views.py:277 msgid "Allowed Domain saved successfully." msgstr "Dominio permitido guardado correctamente." -#: gatekeeper/views.py:295 +#: gatekeeper/views.py:299 msgid "Allowed Domain deleted successfully." msgstr "Dominio permitido eliminado correctamente." -#: gatekeeper/views.py:300 +#: gatekeeper/views.py:304 msgid "Delete Allowed Domain" msgstr "Eliminar dominio permitido" -#: gatekeeper/views.py:302 +#: gatekeeper/views.py:306 #, 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:316 +#: gatekeeper/views.py:320 msgid "Edit Allowed Email" msgstr "Editar correo electrónico permitido" -#: gatekeeper/views.py:319 templates/gatekeeper/gatekeeper_list.html:183 +#: gatekeeper/views.py:323 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" msgstr "Añadir correo electrónico permitido" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:330 msgid "Allowed Email saved successfully." msgstr "Correo electrónico permitido guardado correctamente." -#: gatekeeper/views.py:348 +#: gatekeeper/views.py:352 msgid "Allowed Email deleted successfully." msgstr "Correo electrónico permitido eliminado correctamente." -#: gatekeeper/views.py:353 +#: gatekeeper/views.py:357 msgid "Delete Allowed Email" msgstr "Eliminar correo electrónico permitido" -#: gatekeeper/views.py:355 +#: gatekeeper/views.py:359 #, 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:369 +#: gatekeeper/views.py:373 msgid "Edit IP Address" msgstr "Editar dirección IP" -#: gatekeeper/views.py:372 templates/gatekeeper/gatekeeper_list.html:247 +#: gatekeeper/views.py:376 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Añadir IP" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:383 msgid "IP Address saved successfully." msgstr "Dirección IP guardada correctamente." -#: gatekeeper/views.py:384 +#: gatekeeper/views.py:388 msgid "" "\n" "
    IP Address List
    \n" @@ -1582,15 +1604,15 @@ msgstr "" "\"Red de la Oficina\", \"Atacante Bloqueado\").

    \n" " " -#: gatekeeper/views.py:420 +#: gatekeeper/views.py:424 msgid "IP Address deleted successfully." msgstr "Dirección IP eliminada correctamente." -#: gatekeeper/views.py:425 +#: gatekeeper/views.py:429 msgid "Delete IP Address" msgstr "Eliminar dirección IP" -#: gatekeeper/views.py:427 +#: gatekeeper/views.py:431 #, 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\"?" diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 412247fdc0d8e9bac474bd90aa9043237b9dc5c5..90b2bbf39438504e4a1f38e5475a3eaa7efed870 100644 GIT binary patch delta 17174 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 AS^xk5 delta 16677 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 diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index d32b225..fdcb34d 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-13 20:41-0300\n" +"POT-Creation-Date: 2026-03-14 08:47-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,8 +68,8 @@ msgstr "" #: app_gateway/forms.py:129 app_gateway/forms.py:147 app_gateway/forms.py:195 #: app_gateway/forms.py:236 cluster/forms.py:67 cluster/forms.py:124 #: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:41 -#: gatekeeper/forms.py:75 gatekeeper/forms.py:137 gatekeeper/forms.py:224 -#: gatekeeper/forms.py:254 gatekeeper/forms.py:285 +#: gatekeeper/forms.py:75 gatekeeper/forms.py:139 gatekeeper/forms.py:226 +#: gatekeeper/forms.py:256 gatekeeper/forms.py:287 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -134,9 +134,9 @@ msgstr "Activé" #: app_gateway/views.py:399 cluster/views.py:18 cluster/views.py:45 #: cluster/views.py:114 gatekeeper/views.py:23 gatekeeper/views.py:48 #: gatekeeper/views.py:78 gatekeeper/views.py:101 gatekeeper/views.py:131 -#: gatekeeper/views.py:154 gatekeeper/views.py:198 gatekeeper/views.py:257 -#: gatekeeper/views.py:287 gatekeeper/views.py:310 gatekeeper/views.py:340 -#: gatekeeper/views.py:363 gatekeeper/views.py:412 +#: gatekeeper/views.py:154 gatekeeper/views.py:202 gatekeeper/views.py:261 +#: gatekeeper/views.py:291 gatekeeper/views.py:314 gatekeeper/views.py:344 +#: gatekeeper/views.py:367 gatekeeper/views.py:416 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Accès refusé" @@ -218,8 +218,8 @@ msgstr "Upstream" #: app_gateway/forms.py:41 app_gateway/forms.py:86 app_gateway/forms.py:130 #: app_gateway/forms.py:148 app_gateway/forms.py:196 app_gateway/forms.py:237 -#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:138 -#: gatekeeper/forms.py:225 gatekeeper/forms.py:255 gatekeeper/forms.py:286 +#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:140 +#: gatekeeper/forms.py:227 gatekeeper/forms.py:257 gatekeeper/forms.py:288 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -297,7 +297,7 @@ msgstr "Public" msgid "Protected" msgstr "Protégé" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:45 gatekeeper/models.py:109 #: templates/app_gateway/access_policy_type_select.html:41 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" @@ -591,7 +591,7 @@ msgstr "Êtes-vous sûr de vouloir supprimer la route \"%(name)s\" (%(path)s) ?" msgid "IP Lock" msgstr "Verrouillage IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:196 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:198 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -873,7 +873,7 @@ msgstr "DNS statique" msgid "Invalid hostname." msgstr "Nom d'hôte invalide." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:199 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:201 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1214,7 +1214,7 @@ msgstr "Paramètres du pare‑feu enregistrés avec succès" msgid "Username" msgstr "Nom d’utilisateur" -#: gatekeeper/forms.py:18 gatekeeper/forms.py:269 +#: gatekeeper/forms.py:18 gatekeeper/forms.py:271 #: templates/gatekeeper/gatekeeper_list.html:62 #: templates/gatekeeper/gatekeeper_list.html:204 #: templates/wireguard/peer_list/peer_preview_modal.html:103 @@ -1260,84 +1260,88 @@ msgid "Global TOTP Secret" msgstr "Secret TOTP mondial" #: gatekeeper/forms.py:102 +msgid "Global TOTP Before Authentication" +msgstr "TOTP global avant l'authentification" + +#: gatekeeper/forms.py:103 msgid "OIDC Provider URL" msgstr "URL du fournisseur OIDC" -#: gatekeeper/forms.py:103 +#: gatekeeper/forms.py:104 msgid "OIDC Client ID" msgstr "ID client OIDC" -#: gatekeeper/forms.py:104 +#: gatekeeper/forms.py:105 msgid "OIDC Client Secret" msgstr "Secret client OIDC" -#: gatekeeper/forms.py:155 +#: gatekeeper/forms.py:157 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:157 +#: gatekeeper/forms.py:159 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:159 +#: gatekeeper/forms.py:161 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:165 +#: gatekeeper/forms.py:167 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:168 +#: gatekeeper/forms.py:170 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Les champs OIDC doivent être vides pour l'authentification TOTP." -#: gatekeeper/forms.py:170 +#: gatekeeper/forms.py:172 msgid "TOTP secret is required for TOTP authentication." msgstr "Le secret TOTP est requis pour l'authentification TOTP." -#: gatekeeper/forms.py:174 +#: gatekeeper/forms.py:176 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Veuillez fournir un code pour valider le secret TOTP." -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:181 msgid "Invalid TOTP PIN." msgstr "Code TOTP invalide." -#: gatekeeper/forms.py:181 +#: gatekeeper/forms.py:183 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:184 +#: gatekeeper/forms.py:186 msgid "TOTP secret must be empty for OIDC authentication." msgstr "Le secret TOTP doit être vide pour l'authentification OIDC." -#: gatekeeper/forms.py:186 +#: gatekeeper/forms.py:188 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:195 gatekeeper/forms.py:237 gatekeeper/forms.py:268 +#: gatekeeper/forms.py:197 gatekeeper/forms.py:239 gatekeeper/forms.py:270 msgid "Authentication Method" msgstr "Méthode d'authentification" -#: gatekeeper/forms.py:197 templates/gatekeeper/gatekeeper_list.html:257 +#: gatekeeper/forms.py:199 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" msgstr "Longueur du préfixe" -#: gatekeeper/forms.py:198 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:200 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 #: templates/gatekeeper/gatekeeper_list.html:258 msgid "Action" msgstr "Action" -#: gatekeeper/forms.py:238 templates/gatekeeper/gatekeeper_list.html:221 +#: gatekeeper/forms.py:240 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" msgstr "Domaine" @@ -1361,17 +1365,17 @@ msgstr "Liste d'adresses IP" msgid "Shared/global TOTP secret key" msgstr "Clé secrète TOTP partagée/globale" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:69 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:70 msgid "Per-user TOTP secret key" msgstr "Clé secrète TOTP par utilisateur" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:270 +#: gatekeeper/models.py:109 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" msgstr "Autoriser" @@ -1440,120 +1444,128 @@ msgstr "Méthode d'authentification enregistrée avec succès." #: gatekeeper/views.py:175 msgid "" "\n" -"
    Authentication Types
    \n" +"

    Authentication Types

    \n" "

    Select how users will authenticate through this method.

    \n" -"
      \n" -"
    • Local Password: Users will authenticate " -"using a standard username and password stored locally. Only one of this type " -"can be created.
    • \n" -"
    • TOTP (Time-Based One-Time Password): Users " -"will need to enter a rotating token from an authenticator app. Requires " -"setting a Global TOTP Secret.
    • \n" -"
    • OIDC (OpenID Connect): Users will " -"authenticate via an external identity provider (like Keycloak, Google, or " -"Authelia). Requires Provider URL, Client ID, and Client Secret.
    • \n" -"
    \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. Requires setting a Global TOTP Secret.
    If Global TOTP " +"Before Authentication is enabled, the PIN is required before the " +"username and password to help combat bruteforce attacks.

    \n" " " msgstr "" "\n" -"
    Types d'authentification
    \n" +"

    Types d'authentification

    \n" "

    Sélectionnez la façon dont les utilisateurs s'authentifieront via " "cette méthode.

    \n" -"
      \n" -"
    • Mot de passe local : 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" -"
    • TOTP (Time-Based One-Time Password) : les " -"utilisateurs devront saisir un jeton rotatif à partir d'une application " -"d'authentification. Nécessite la configuration d'un secret TOTP global.\n" -"
    • OIDC (OpenID Connect) : 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" +" \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" +" \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" +" \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. Nécessite la configuration d'un secret TOTP " +"global.
    Si TOTP mondial avant l'authentification est " +"activé, le code est requis avant le nom d'utilisateur et le mot de passe " +"pour aider à lutter contre les attaques par force brute.

    \n" " " -#: gatekeeper/views.py:206 +#: gatekeeper/views.py:210 msgid "Authentication Method deleted successfully." msgstr "Méthode d'authentification supprimée avec succès." -#: gatekeeper/views.py:211 +#: gatekeeper/views.py:215 msgid "Delete Authentication Method" msgstr "Supprimer la méthode d'authentification" -#: gatekeeper/views.py:213 +#: gatekeeper/views.py:217 #, 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:263 +#: gatekeeper/views.py:267 msgid "Edit Allowed Domain" msgstr "Modifier le domaine autorisé" -#: gatekeeper/views.py:266 templates/gatekeeper/gatekeeper_list.html:186 +#: gatekeeper/views.py:270 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" msgstr "Ajouter un domaine autorisé" -#: gatekeeper/views.py:273 +#: gatekeeper/views.py:277 msgid "Allowed Domain saved successfully." msgstr "Domaine autorisé enregistré avec succès." -#: gatekeeper/views.py:295 +#: gatekeeper/views.py:299 msgid "Allowed Domain deleted successfully." msgstr "Domaine autorisé supprimé avec succès." -#: gatekeeper/views.py:300 +#: gatekeeper/views.py:304 msgid "Delete Allowed Domain" msgstr "Supprimer le domaine autorisé" -#: gatekeeper/views.py:302 +#: gatekeeper/views.py:306 #, 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:316 +#: gatekeeper/views.py:320 msgid "Edit Allowed Email" msgstr "Modifier l'e-mail autorisé" -#: gatekeeper/views.py:319 templates/gatekeeper/gatekeeper_list.html:183 +#: gatekeeper/views.py:323 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" msgstr "Ajouter un e-mail autorisé" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:330 msgid "Allowed Email saved successfully." msgstr "E-mail autorisé enregistré avec succès." -#: gatekeeper/views.py:348 +#: gatekeeper/views.py:352 msgid "Allowed Email deleted successfully." msgstr "E-mail autorisé supprimé avec succès." -#: gatekeeper/views.py:353 +#: gatekeeper/views.py:357 msgid "Delete Allowed Email" msgstr "Supprimer l'e-mail autorisé" -#: gatekeeper/views.py:355 +#: gatekeeper/views.py:359 #, 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:369 +#: gatekeeper/views.py:373 msgid "Edit IP Address" msgstr "Modifier l'adresse IP" -#: gatekeeper/views.py:372 templates/gatekeeper/gatekeeper_list.html:247 +#: gatekeeper/views.py:376 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Ajouter une adresse IP" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:383 msgid "IP Address saved successfully." msgstr "Adresse IP enregistrée avec succès." -#: gatekeeper/views.py:384 +#: gatekeeper/views.py:388 msgid "" "\n" "
    IP Address List
    \n" @@ -1600,15 +1612,15 @@ msgstr "" "\"Réseau de bureau\", \"Attaquant bloqué\").

    \n" " " -#: gatekeeper/views.py:420 +#: gatekeeper/views.py:424 msgid "IP Address deleted successfully." msgstr "Adresse IP supprimée avec succès." -#: gatekeeper/views.py:425 +#: gatekeeper/views.py:429 msgid "Delete IP Address" msgstr "Supprimer l'adresse IP" -#: gatekeeper/views.py:427 +#: gatekeeper/views.py:431 #, 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\" ?" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 77aa94f1ec6392528ca153136debc7b12a1609e4..14eb6bb60ad6caf38115414679812944bf6dc644 100644 GIT binary patch delta 17118 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≈ZxN2y~c3+>vwp(A$bkKQeQ14^GF% zuX+6c)!TWzOgVf6Kf67AR#7jW_M<%hzX_d#%_!eP#cPbVFQ`$dDNaLm_%T++N@MJd z48c{DXO7|dA3-Mib$h~U>`M6>YE#u5>oIBg3QobIZ?I-`+cZIZa3rYltrMXJ{I-SNyPM+jM{XKur)44 zP3e8qd%`opo*#tT)P+z>8;N>T)^_ENsK;`I*Jb8o7=bj@iQl63zzx*%eFw{9UOF6& z^-*uQQEmWJQ5Rf_+VuxeOLG&oDPt$vKbRbVx~>m(AMY|Uy3jf-glVYV{0(ZCK1EHT znPf*6irV#&xEEtlo9RAkw`ZMfXRZwDMpaPHe{IxEw?VZVfNW~7nMOuav&uEtgSy}; z)QP{KKCAy?bk-Arv!^>a`cUV~cG-KYVaM-Avt)H^>k#m+z@jG#Oc)9d+PLPjU7 zz&UsXwMkk{u_Nh#>QG;#$7T}h0*i4l9zwmSqNaL`2X$m|nZMHUBbM|INyiWziowRK6Z{b4eTfwcdb3f=N78Z2$=AiSB)<@sxmZ*3zmq!C?k>JKPP~-o=dj^J zVSXZMv31nMIx*YNik` zPC7{JF=?)AQ;66x(rS{9b-t<O5U*pPr8JPzUes|9V=$i7hxj0$CoaUhlxQU)&qzAnrbh3oss0i_A)J$Fr|;Gus9*L! zkZzKC(_TL@bhM#PM>YHr`DtqElHPOijrgX^&nM3R1=h{*<^Jy|>GFqYbeHG~)HjFs zq2Xn1%91{F7Z^`me_NZCSPx>yD5ttQvi|=t;;8RITu6;;E}BbWj=HY=`b(|9<|?Bo zccFeS`4`7dUt*OI?+q7OjoWDzOZ6_)FN0bbKj&zb5H>I!*s+^>hkvkk*ho5-f(982l6R`ci~&;=9DUlP*%e zMmk7d#|2+-e2BM+D=DJSem7Exi%lUvmwZjGGSR%lHlG#IDL(*B--DX(R zwSNoCQ_e{5bUY)UPVd74RD4dL0siV5pQOBr1|HH3@^wi;VUtkH$NqR!Q9d$ZJk-nvTgkObbHiFBB=#?99wt@MIawpefF!?aj z6H*$n_h}PIK9>BSK1$9)wMA9}} zGzwSY{N|)V6oM4sh<0uz{^ICPWW06VKOtRs7K&$0{2|&+LTL?bhNhk z|2dA>CDIKSd;O)lk6yajG4kbH`CHc}4`r{rrb6i{?@Y&pYNV-?@BE%F9T)!VY4?@#P~Mv5!gb5xj|?yi}P+{ug4^x!wR$LCVJ| z>lp7mgl+kVnj-|alQNO|)3_lHq4Kb6c$%_~x2Y>atRPk-eNXHP{z2>`e+y%3lOIoP zE9J$gV+(05X@D=NW@x}fqF!I=nq>#PLar`kyo2!vti9b__BI&2-e3(Xq43uk; z{-%5zcc6|99R>`-cR*3fm(ZQ6GNUcbdY0{Y30M|4- z`K_cZ+`T^PC`P*o@|j5YU97yb27XW4MjM}PZW@!Pk8{!y`yZ(ksWkEZ zq;Jx(QX>eYcROjnyZ9n1Px&6y4(;$JwcSWM?&ED*WO8N2dQyIaa$bxhbs+W>^I!t; zQW%aIi1oxV_$B%d*Dtecdg7>pyPEYF8svN4CDb?d_3R5j4)z52N_VZb@ZVrh;Q~#D z_3k-1tVPceBgPDStxrPCh>@=i8~RGkYGG}C<-3OZHh1mji|rD;FlR1LR^Q`p5n2AL z_m$~B$XBsTh^;EtEi~}IDtl^=ZWDIBH{?v*u4!wRwcK^(*>Bl%v>7mb*od$`eZvw* zjqE#geVO}o f(*M_&m#XGG+3I_5NU5}wnLXQTr>$z}iLUv7!wmO- diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 4fbc351..1eb1a1f 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-13 20:36-0300\n" +"POT-Creation-Date: 2026-03-14 08:47-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,8 +68,8 @@ msgstr "" #: app_gateway/forms.py:129 app_gateway/forms.py:147 app_gateway/forms.py:195 #: app_gateway/forms.py:236 cluster/forms.py:67 cluster/forms.py:124 #: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:41 -#: gatekeeper/forms.py:75 gatekeeper/forms.py:137 gatekeeper/forms.py:224 -#: gatekeeper/forms.py:254 gatekeeper/forms.py:285 +#: gatekeeper/forms.py:75 gatekeeper/forms.py:139 gatekeeper/forms.py:226 +#: gatekeeper/forms.py:256 gatekeeper/forms.py:287 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -134,9 +134,9 @@ msgstr "Habilitado" #: app_gateway/views.py:399 cluster/views.py:18 cluster/views.py:45 #: cluster/views.py:114 gatekeeper/views.py:23 gatekeeper/views.py:48 #: gatekeeper/views.py:78 gatekeeper/views.py:101 gatekeeper/views.py:131 -#: gatekeeper/views.py:154 gatekeeper/views.py:198 gatekeeper/views.py:257 -#: gatekeeper/views.py:287 gatekeeper/views.py:310 gatekeeper/views.py:340 -#: gatekeeper/views.py:363 gatekeeper/views.py:412 +#: gatekeeper/views.py:154 gatekeeper/views.py:202 gatekeeper/views.py:261 +#: gatekeeper/views.py:291 gatekeeper/views.py:314 gatekeeper/views.py:344 +#: gatekeeper/views.py:367 gatekeeper/views.py:416 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Acesso Negado" @@ -218,8 +218,8 @@ msgstr "Upstream" #: app_gateway/forms.py:41 app_gateway/forms.py:86 app_gateway/forms.py:130 #: app_gateway/forms.py:148 app_gateway/forms.py:196 app_gateway/forms.py:237 -#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:138 -#: gatekeeper/forms.py:225 gatekeeper/forms.py:255 gatekeeper/forms.py:286 +#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:140 +#: gatekeeper/forms.py:227 gatekeeper/forms.py:257 gatekeeper/forms.py:288 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -296,7 +296,7 @@ msgstr "Público" msgid "Protected" msgstr "Protegido" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:45 gatekeeper/models.py:109 #: templates/app_gateway/access_policy_type_select.html:41 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" @@ -583,7 +583,7 @@ msgstr "Tem certeza de que deseja excluir a rota \"%(name)s\" (%(path)s)?" msgid "IP Lock" msgstr "Bloqueio de IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:196 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:198 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -864,7 +864,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:199 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:201 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1206,7 +1206,7 @@ msgstr "Configurações de Firewall salvas com sucesso" msgid "Username" msgstr "Usuário" -#: gatekeeper/forms.py:18 gatekeeper/forms.py:269 +#: gatekeeper/forms.py:18 gatekeeper/forms.py:271 #: templates/gatekeeper/gatekeeper_list.html:62 #: templates/gatekeeper/gatekeeper_list.html:204 #: templates/wireguard/peer_list/peer_preview_modal.html:103 @@ -1252,77 +1252,81 @@ msgid "Global TOTP Secret" msgstr "Segredo TOTP Global" #: gatekeeper/forms.py:102 +msgid "Global TOTP Before Authentication" +msgstr "TOTP Global Antes da Autenticação" + +#: gatekeeper/forms.py:103 msgid "OIDC Provider URL" msgstr "URL do Provedor OIDC" -#: gatekeeper/forms.py:103 +#: gatekeeper/forms.py:104 msgid "OIDC Client ID" msgstr "ID do Cliente OIDC" -#: gatekeeper/forms.py:104 +#: gatekeeper/forms.py:105 msgid "OIDC Client Secret" msgstr "Segredo do Cliente OIDC" -#: gatekeeper/forms.py:155 +#: gatekeeper/forms.py:157 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:157 +#: gatekeeper/forms.py:159 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:159 +#: gatekeeper/forms.py:161 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:165 +#: gatekeeper/forms.py:167 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:168 +#: gatekeeper/forms.py:170 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Os campos OIDC devem estar vazios para autenticação por TOTP." -#: gatekeeper/forms.py:170 +#: gatekeeper/forms.py:172 msgid "TOTP secret is required for TOTP authentication." msgstr "O segredo TOTP é obrigatório para autenticação por TOTP." -#: gatekeeper/forms.py:174 +#: gatekeeper/forms.py:176 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:179 +#: gatekeeper/forms.py:181 msgid "Invalid TOTP PIN." msgstr "PIN TOTP inválido." -#: gatekeeper/forms.py:181 +#: gatekeeper/forms.py:183 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:184 +#: gatekeeper/forms.py:186 msgid "TOTP secret must be empty for OIDC authentication." msgstr "O segredo TOTP deve estar vazio para autenticação por OIDC." -#: gatekeeper/forms.py:186 +#: gatekeeper/forms.py:188 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:195 gatekeeper/forms.py:237 gatekeeper/forms.py:268 +#: gatekeeper/forms.py:197 gatekeeper/forms.py:239 gatekeeper/forms.py:270 msgid "Authentication Method" msgstr "Método de Autenticação" -#: gatekeeper/forms.py:197 templates/gatekeeper/gatekeeper_list.html:257 +#: gatekeeper/forms.py:199 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" msgstr "Comprimento do Prefixo" -#: gatekeeper/forms.py:198 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:200 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 #: templates/gatekeeper/gatekeeper_list.html:258 msgid "Action" msgstr "Ação" -#: gatekeeper/forms.py:238 templates/gatekeeper/gatekeeper_list.html:221 +#: gatekeeper/forms.py:240 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" msgstr "Domínio" @@ -1346,15 +1350,15 @@ msgstr "Lista de Endereços IP" msgid "Shared/global TOTP secret key" msgstr "Chave secreta TOTP compartilhada/global" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:69 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:70 msgid "Per-user TOTP secret key" msgstr "Chave secreta TOTP por usuário" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:270 +#: gatekeeper/models.py:109 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" msgstr "Permitir" @@ -1423,117 +1427,125 @@ msgstr "Método de Autenticação salvo com sucesso." #: gatekeeper/views.py:175 msgid "" "\n" -"
    Authentication Types
    \n" +"

    Authentication Types

    \n" "

    Select how users will authenticate through this method.

    \n" -"
      \n" -"
    • Local Password: Users will authenticate " -"using a standard username and password stored locally. Only one of this type " -"can be created.
    • \n" -"
    • TOTP (Time-Based One-Time Password): Users " -"will need to enter a rotating token from an authenticator app. Requires " -"setting a Global TOTP Secret.
    • \n" -"
    • OIDC (OpenID Connect): Users will " -"authenticate via an external identity provider (like Keycloak, Google, or " -"Authelia). Requires Provider URL, Client ID, and Client Secret.
    • \n" -"
    \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. Requires setting a Global TOTP Secret.
    If Global TOTP " +"Before Authentication is enabled, the PIN is required before the " +"username and password to help combat bruteforce attacks.

    \n" " " msgstr "" "\n" -"
    Tipos de Autenticação
    \n" +"

    Tipos de Autenticação

    \n" "

    Selecione como os usuários irão se autenticar através deste " "método.

    \n" -"
      \n" -"
    • Senha Local: Os usuários se autenticarão " -"usando um nome de usuário e senha padrão armazenados localmente. Apenas um " -"deste tipo pode ser criado.
    • \n" -"
    • TOTP (Senha de Uso Único Baseada em Tempo): " -"Os usuários precisarão inserir um token rotativo de um aplicativo " -"autenticador. Requer a definição de um Segredo TOTP Global.
    • \n" -"
    • OIDC (OpenID Connect): Os usuários se " -"autenticarão por meio de um provedor de identidade externo (como Keycloak, " -"Google ou Authelia). Requer URL do Provedor, ID do Cliente e Segredo do " -"Cliente.
    • \n" -"
    \n" +" \n" +"
    Senha Local
    \n" +"

    Os usuários se autenticarão usando um nome de usuário e senha " +"padrão armazenados localmente. Apenas um deste tipo pode ser criado.

    \n" +" \n" +"
    OIDC (OpenID Connect)
    \n" +"

    Os usuários se autenticarão por meio de um provedor de identidade " +"externo (como Keycloak, Google ou Authelia). Requer URL do Provedor, ID do " +"Cliente e Segredo do Cliente.

    \n" +" \n" +"
    TOTP (Senha de Uso Único Baseada em Tempo)
    \n" +"

    Os usuários precisarão inserir um token rotativo de um aplicativo " +"autenticador. Requer a definição de um Segredo TOTP Global.
    Se o " +"TOTP Global Antes da Autenticação estiver habilitado, o PIN " +"será exigido antes do usuário e senha para ajudar a combater ataques de " +"força bruta.

    \n" " " -#: gatekeeper/views.py:206 +#: gatekeeper/views.py:210 msgid "Authentication Method deleted successfully." msgstr "Método de Autenticação excluído com sucesso." -#: gatekeeper/views.py:211 +#: gatekeeper/views.py:215 msgid "Delete Authentication Method" msgstr "Excluir Método de Autenticação" -#: gatekeeper/views.py:213 +#: gatekeeper/views.py:217 #, 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:263 +#: gatekeeper/views.py:267 msgid "Edit Allowed Domain" msgstr "Editar Domínio Permitido" -#: gatekeeper/views.py:266 templates/gatekeeper/gatekeeper_list.html:186 +#: gatekeeper/views.py:270 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" msgstr "Adicionar Domínio Permitido" -#: gatekeeper/views.py:273 +#: gatekeeper/views.py:277 msgid "Allowed Domain saved successfully." msgstr "Domínio Permitido salvo com sucesso." -#: gatekeeper/views.py:295 +#: gatekeeper/views.py:299 msgid "Allowed Domain deleted successfully." msgstr "Domínio Permitido excluído com sucesso." -#: gatekeeper/views.py:300 +#: gatekeeper/views.py:304 msgid "Delete Allowed Domain" msgstr "Excluir Domínio Permitido" -#: gatekeeper/views.py:302 +#: gatekeeper/views.py:306 #, 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:316 +#: gatekeeper/views.py:320 msgid "Edit Allowed Email" msgstr "Editar E-mail Permitido" -#: gatekeeper/views.py:319 templates/gatekeeper/gatekeeper_list.html:183 +#: gatekeeper/views.py:323 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" msgstr "Adicionar E-mail Permitido" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:330 msgid "Allowed Email saved successfully." msgstr "E-mail Permitido salvo com sucesso." -#: gatekeeper/views.py:348 +#: gatekeeper/views.py:352 msgid "Allowed Email deleted successfully." msgstr "E-mail Permitido excluído com sucesso." -#: gatekeeper/views.py:353 +#: gatekeeper/views.py:357 msgid "Delete Allowed Email" msgstr "Excluir E-mail Permitido" -#: gatekeeper/views.py:355 +#: gatekeeper/views.py:359 #, 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:369 +#: gatekeeper/views.py:373 msgid "Edit IP Address" msgstr "Editar Endereço IP" -#: gatekeeper/views.py:372 templates/gatekeeper/gatekeeper_list.html:247 +#: gatekeeper/views.py:376 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Adicionar IP" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:383 msgid "IP Address saved successfully." msgstr "Endereço IP salvo com sucesso." -#: gatekeeper/views.py:384 +#: gatekeeper/views.py:388 msgid "" "\n" "
    IP Address List
    \n" @@ -1580,15 +1592,15 @@ msgstr "" "\"Rede do Escritório\", \"Atacante Bloqueado\").

    \n" " " -#: gatekeeper/views.py:420 +#: gatekeeper/views.py:424 msgid "IP Address deleted successfully." msgstr "Endereço IP excluído com sucesso." -#: gatekeeper/views.py:425 +#: gatekeeper/views.py:429 msgid "Delete IP Address" msgstr "Excluir Endereço IP" -#: gatekeeper/views.py:427 +#: gatekeeper/views.py:431 #, 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\"?" diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo index a2a115c976afe86245185e4de04286a8a54450d1..da44909a0969003f0c52afc094e48402136de8f7 100644 GIT binary patch delta 17155 zcma*u2Xs_L-^cOU0HN0ap$Q9tK~LKaU4$VY0MLxzl(LTXm4X?<}g0fv5zt1sc>wdF@?EtyFtdhO1b}F zW4iHxUvXm&V_H3B%o#5HDbAR|#Ir^jGoSk21Y@S*mLy}siPui0Bh>4kZcKErF&P=g z4B`CliNQD1 z5EjJK&hIgd@*OOXC8yc@HNl*eTdT}D(}@fXH$5>g_C-A~28&?2E6+wfU?~>G^;isd zq2i~o5Ps*%zaz70vQIZAH$H)CaAhojwb7T4ObZw2f@;8%s0&7+9`rP-L9i_%$+vX4DL0^t>cgy@@lJ|59Y0BcPV9MfG^6tN6LA_!ZVB zegicHrDqyb5gTCz9ExE$9n0ezsQVp4_4FImNZmwrFvl~tLxnY$UIJkRH0N!xCnlmQ z?nXWM2-d{EF$Am5VzFU!tcY=_5t@U#&vLAU`%xXbfoj+TEQjT0+mUGDBa?$b7t~Pq zLbZ4lR>QH_0M}qMJnt;=tT8Pq_rvD61e@R)Y==djGo~I6z=k*5bI)N*VHa$P_c0Qiyx=m?9g81>);EQslt8)v%sJk;7*j9P3PQ61Rj z;^#4x@=a7jaxS#@DT}_m1ZtAe8?7;_Vn5U>O-5~_`KTVPLyg3CY=!%7@hFN4*w8mi|5Q1?%9=cg@V{&nL8?!*R+qWlrI!JF6#>n`TQ0;i%D*#Xo8 zj$u)}fW`2ZD+j-9r=m2fp*2w>+XFSCqft{d-RDlM#Nq_rNA=`5s^^zb7ygKPP_`wu z!6i^Vk3{vT0jhpSXCKtaK80%NOjNy>Pz_q^%Dw|Ga|YG3tC$OaL0$LAE zS#jOPv-2fEBT@>rD{7$@XA4xryP|fbjw*`zE5c?+h28gY?`i#XLOUyzMINKn?vKR0BRm z_3$LBhgVTU{RcM2g3IlQbwa&2p2Y4r5u4%>R0DFZunm0z+ft4~eP&ERUw<+mkm-qq zRvI%5W3e;t!xC8FHQRv7ScY-~ERB6o4@^Zh^b^$3pLSlsCX|0eEzVl2j2VbcP$RN< z72~fSuON^I-$dPLE7rz?sQ4eKh6b(Hiea&#>Yc}OcoX%)DY(YIn(Lt&(i=6Uv8cJv z#0vN6$b zHmawsTsa!cQyzqB*km6W^>6{|0k2}Xhc_N-$Uc3;Zl5nvBXtgQ;J2uTTti)d2en4b zoA%XQ2)z`0VJ%F@vbYv?-9A*qe4mrig=bL}uVP&cU1#l#8hRh90cUYIeuF{ScD=n} z2h{mK&LOA{j6`kgGz@%bp{8aY2KN7QSK%GZ$%(z#5)Y&1EYAkJ+RLCC+TS?}wT;GM zdwc=a!;`4%Zew@Mw$ZHx)b+7g9n&z6R?}-_DiYX;;rKZ|fp<|iD*Bck%5cn1xdZ0H zE|?qpVqP4Ebuax@?GGRoQ4Jb| zYTzhT!!m8$XQq*9NMIi7#s{6hpdL{CJ$vIes20bfhW<6wB0Y}!G`xXPSm}LxpFyY* znt>hhIn;=Lfokv#EUNu~mrOK)ygT?JihWTdvH)x0Hmrl+VFfJq0XqU4Vk9m>J@^Q! z-b2(B*7?xxj((^I4nd7*JT}B+tgHRMj*N!r0v5(=s29;a)Q!r2WaI5oi)a7_h7xt- zOe}%Z-T7Bh_t}8;@MF{(xQ*5D9_qUAkC}fxIFgL!tOcrKG-_Y>LOpOGYR*QZR&%;L zKgl@*wfdjOQuqoM$L**F97SF4*=g^W&slmW<6npqRS7h~Ca4FDa}|83^Yc+Xd=0h8 zKEOtJ7S-UwyX+gS6qcl16IWwL)JWVwHSj*F!})gGcuD=+jV`E0Ko4$*YH3&J0My(L z$6~k?H6@#|5}rbh)L-tr*<;sEaa6+_V_ocwS}Q(OgWg3=;eG`)7bj73ei7B99G}?5 zQUFyBL7gvyYCs#*jYgw}dLov^g{b&D*cSI;2ZCEkLu{Rm{b0^^fY8Swx_)2Gdm^MQFHz~hT#J&kL5qN zBhUs_?u9up12tt6QH$$s0h}^`lulsg?VruYEGA8 zX?(-E7uC?OF&s;swC7u)IyeM15+hOfNyH*J&PPUzZ4Rm-D^Wdq6ZN2XP(!v0-^8P+ z#gul+_V77W{S~MOt;0h2j&m=n=O?iU{)8d;5DTL(~E-LS-2rh~=V5dRM1d&9q2`8;9Y1s+Pd`z01J<%5^)Zffy8y{7)i9|8|HBd;-9 z+W$Y1p(SR~b>7odD0PFMhE?%Leq74Ihs{sM_&GoLSNoffTey~T+dF)B-~re0(_j|q zU(7iVUT-{RGx7aF9`h;X^k9$q2%F~im=xlFW)0{QSN}YbX+nVhhw7=;IuP zzFGt(lBtdxkq(=)&aY96>O0hfenKst-%)d$tE?xmxWZ5$&&^N|=!crJco%;bHD#+@ z`4cQg`CM6k{}MswCIRi!lI83TB2YbQidvN2P(2uiT7(&>T`?2&B3X!9<(siMe(K_v zQ1$O418wqpZMg`lL*>0bPvAEc5d_rJZK#IqMBV5ZmdEcrtB(eghMLWdM#1!k1;+ny1{JJ5H3Xx@m5ri51{7sJnBXdu`gB&^8{Wb z(@`&;x!4E~qwbTfq9^bID}yyCcSQ~PBv)RDRVn-SkkJs|z{>bH>VaXE>;pPFd!t5R zC~A%;qk6ai)qvd?iGO1otjQ;s8kB|&@NLxlj&Pmt!PKpf|R~C8)Xk%Efb6w?o$zwW!9UM$m^^lrN$lxDvHSHlyzM8ETCcso^n`urw~_ z`DO_jU09>09ik?vZ8#2f!4%Xgo{bv%#i&KL-km>+YQUGMRsB6`YJNtotunRjl-5M8 zf!?V5#iLI*98X4z<^|NyzK-hgFQ|rJ#ZtcK|5Xi zIBJ`oMlI@JQM)Q<9rnMrK|~!}p&f=%jzv|RjcVyK)Z*NTy3tA0BE5-Pltm+Ly+~&( z>_of=szJ+8Us^Yzw&^j{>c1Pw{#T$pzmjf_ol%Q!4tB&W)cJf-c1Y`^Ml25V;&{x1 z&!86Ztp4MvY)RYU+Hm$>_zh0yQUxU4 zJEI!%G-_=;>&`DmeI{&2J?L}P$o!0Y;Gd{PU96F{G%`XyQ=UvdPIN}i^#JtZC|7bh^$1tfVQB9eh;bvU!mTxH{JQl&DsBY zLp30yq3w^lFb4I2r%|i?c^6;od;>N2@1f>83)QpBu6zeuQ4VQg7hzx2+8KjG@kQ*6 zH(Rj(y=0oSv_m%-`%s>Ot??wrVX;;oGXf{!6#NE<;n3Fhy4}u8SeLkIW8W81*p1>~ z)KtBNTJ=Yqm)rR4w)vBQdfKk7$4tPUs5NmEH8NkK7U4zIw!DtD@E>=+W;;*dHyaIc zD)E=li-p_U-4%(ADGxZuBuW!@H>Z zQ623X7>1gr0v)iZ_PNgpPhSAR6sF4|h z_3&xbDqe?LWS3BjseD)az$6?(c`WLM^CfEapGQsM&(1$FzxIE&Zg$8DqvkpSbwOQc zd(;RFbmvE7bINI`hHb@;cmUPI0^RLMltb;VIv9;Tu^KKzZOcPAfajYlWVG#?^{|Vp zE9#p}ENYuAM_srP_3l4|8ma6(?W(SVS{ofuLp~POa~}rY52!V<1T|t?Pz}G0KJ_?9 zFZCOJvzN}5ai``K@OGORcBGj92J8FbZxbxqjMk0G3J7tlm2Q)=BtQ+dZGz>K&Q&4Zn z*{J)>LygdiKJ0&G))LUGbpvXs_M>|Gl`H?|%6a>G0zbu8K#f#5Mq)QqgQugm+iG|I zGt|`F#THnJt)qHzsE*I_kiPs!!xo|LyVJ%0Kuwi*ptUAy>U~Yg=;OCNYG`_+=6pD6B*vlk>jG?ur%(;aH^{y~ z>S9;QT~SlD4E5o)1NFW*?mUfJ6JMj&(yvGZeC8iAnu1(Uy6uBn{pGL&4nz&%YAlZ@ zP!0YSv*Sb5cFjK6J~$L>QLce?aR{pZLe!M5M2*CI*i8FB%LP0`Y|9FwR&8n2q6$Y1 zc|%k~5>Rves*4{&Ew+0&5K9cTU+L0N`+Nf`eh@W+-eLCqK+M7O&5L9@;mfEu+-1}d zg+65)5Qgn3*Tbeb8LQ%ls2g5E&G{2C_6tWl97=gKw#7rJeV;GZzPP%fuA7HGZI6Rw zG(?}HhV(0JfR~*mhugX9iJIe)SRZFNKSYhxEi8#aBkWo#gBt4Us1a(6+MWYYBNIP@ z{ojntYyxV?e$>z&N6qOy)C(nloSl*~sCt#1wNZ<<5$eX#s6{sjHHERRoP?^EiE79! zR72Os`RtJIBA^lY4fS9%(i-9nNA2H6s2fi}y)T||zJ~g)_mT5!)XSxcb3Jy{{?8(#p~;tMKSt}IhIk@s&Ss(JbTMlGuR!gBJ*bhokD9Xl zN%lLT7xf06hKg@Q-ES9G!B0`w-NwS&|3S%isEVRiaWB-6jX?Em3~B_%p%-Vn@;c}H zs9kdawc3xMM(SS}iT}8AofJDo{jm=5v6!9boAqSW!%e7t{~l`2_o5nf83T(G)ew_v zr>G!CQLKm^a3E@AR-<0Y7g67$t3PdfoPrwBX{ZLjh&~O)VltYWH&GYv#b>Z!n#W|~ zB5Z!bM-gFsu@pa9#-=gPYH0RHuUcF&s?R%m>cBVYvmCvIZT6i4$Umq6T z#@P!;;6%!sQ9X+oZ-2TSiW;)*_&)xC&*O>-j1Uc}Jkb;QTaQMQ>=ZnYTAWL;Dz0)K zMXiauSPOGcX8&uh8%?(Rw*_j5Vo{4F4Yk^rIoDt|${U=UkX3B9qPF2Z)D$(EVpo4h z)YJ_|t&MmLe5#_}qzim5@D}O?l7)Kk52!^{aH_qq9;!!eur_vaPC<>#X4H+pasG*# zf*a-vQDN*-Xgw^rwK%D(|j!X>#4^Z2p+B0_h)y8?0d!V-GMO4p!K#k0w zsNGX!mVHndj-VWkdf;YcZ3d3qE^|MKpR!4FNIH@$l1V1>G`>Y8y|Z;pBCRL39UJ-U z)G6)DPpKqH$2BLPGNu>#rMSYyx|08m^d$9u!AHm8$MSrAHhf^1t0Z+n$9G)+z-G;H z@~^o1i||kV#lr@I`$=z*Y7xAHIvSB*O8zHzftJ;L@~kj3o4C5To7i2_ORmln#14}5 zYY!dk{1K61Io_mn-`_Jb#K)U1@M*#j{`>fiv%M&>#mrE5T{WEMYAhpumhw^LLoIOJ zrW{OuIjJbA3+cS8um9skFAp7h?dpFfnT)>%u_|N9tmNb}{F}6Zq@yvFbfn<(?qZb_ zD2KRnU*kKZew;5!(yMP3<=60itWWxac%jFxuSdQy=~^Jhsw_h$mNbmYI<^K**gxX` zihOb68%ez5jUVZZIpykpO+Jh`ui3z%H&7hs=HO;x`gPeI{MDUrMf^I6x32je17FVG z#kM3~vF0Z(&|cg?THt?BH?&3@BHB%t+$|20=TpMuP*Pjmahmcs{#H>T(F3?*B+){+ z9v_lAxT|Xrdvx?6&sH{7Nf+Juc8{Guw(pTTWE3^S?+sp5sgooE<390p|?r>D~4_HpcHr-;;(@U!Qjmi1#Jw zXo6ReZ>IWpG_%;n-@+*_|1$C2LA(_BApZAJ+2uc>($7R+!)`d6IPX?djdaA_U<&d4 z%vWAwF~kl~UhB@04SfCB@4s9>q}gQ`4N;h*tt(G>toBLnGM4gS&VNk)(Xq{6r$LDC zI~Q4lTdAdQ7TZyu0xdC^G=fx$beh;G)X|Xob=5jewE!86483mKfB7uDZfnx59tN+ZAkgaFH#-U!8gIczsB7pUz5~>a|z#E(n%#K>*%X~Rhd$2Qk;vv zNlah-){tK2g85hlYm;>3#z=S5VE^^TrK5w~nO(MmIYD`ltC2*$Jn2u;2gKf>PG0g+ zO=C9x^wnRQWp74T!KHMj!0}x+G2}=F=)W`-AReW z3%GhUom+@MI);&1Px%$j>CZY|CqI}Upv+uOv?uU@z%QJY<AFIyRAB zCyntxXcn4dI?-wVlFh5dk0v*S`cH8#w;RVVi2X=;BJp$NzeOG2lh-lRsr(R^FGjvP z`D-`}2R~LvKagDUZ)#rJmqoM|>43ZA$DH|#?(PLhri#9kx)KzR)1bn-Eno$_?@-Bn4i#2XZ9~d0sgcu_6^o@jiE=15APpe)7ruy1iC4k$n1fgh zj>qHZ-`b(-wu!AWOZ$h63HA4Ss+j-zG0prBClxM}=V z)aHHt^Ql}kVW|K2NhKTcvwyTyk_m_y#;3)N@W$H9bt*GGE-g7GDb5>{ zJi?pmdg;wb@s=GOmze4uo{|(Bli`g`%goRN~%5i>j?-M=NR)V7}or{>=lmb9^c zvH!I}+df%4v1idf6H+I5W4NA%j*L&pT0J~I&foK|5=*kOdj>JQ`O9{Vk4w);j`NO= zOHWMsAEUJ-XHHMVl1Vu{<2792|Gy#DMSD~~S75xV?4P?NG}sgV-v@e0`(V#ZJJPKZ zykp|LsVQSq662DyHvGr1XRS`8d4W5nYW)7QHz}F_9{K8lp-zwSj-7B|cg%=P-BA~$ zreq%2owaFfOh(-P-RTKgyOO*~amgu3-WWPvk6tHL_wJvULcOG{)uUs)u_O0Y zgR4_A;=NfPWuzofdvsc6Y)Ym#Jw7odGcW-S?+h!r3;z{ C2BdTV delta 16684 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\n" "Language-Team: LANGUAGE \n" @@ -68,8 +68,8 @@ msgstr "" #: app_gateway/forms.py:129 app_gateway/forms.py:147 app_gateway/forms.py:195 #: app_gateway/forms.py:236 cluster/forms.py:67 cluster/forms.py:124 #: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:41 -#: gatekeeper/forms.py:75 gatekeeper/forms.py:137 gatekeeper/forms.py:224 -#: gatekeeper/forms.py:254 gatekeeper/forms.py:285 +#: gatekeeper/forms.py:75 gatekeeper/forms.py:139 gatekeeper/forms.py:226 +#: gatekeeper/forms.py:256 gatekeeper/forms.py:287 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -134,9 +134,9 @@ msgstr "Povolené" #: app_gateway/views.py:399 cluster/views.py:18 cluster/views.py:45 #: cluster/views.py:114 gatekeeper/views.py:23 gatekeeper/views.py:48 #: gatekeeper/views.py:78 gatekeeper/views.py:101 gatekeeper/views.py:131 -#: gatekeeper/views.py:154 gatekeeper/views.py:198 gatekeeper/views.py:257 -#: gatekeeper/views.py:287 gatekeeper/views.py:310 gatekeeper/views.py:340 -#: gatekeeper/views.py:363 gatekeeper/views.py:412 +#: gatekeeper/views.py:154 gatekeeper/views.py:202 gatekeeper/views.py:261 +#: gatekeeper/views.py:291 gatekeeper/views.py:314 gatekeeper/views.py:344 +#: gatekeeper/views.py:367 gatekeeper/views.py:416 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Prístup zamietnutý" @@ -218,8 +218,8 @@ msgstr "Upstream" #: app_gateway/forms.py:41 app_gateway/forms.py:86 app_gateway/forms.py:130 #: app_gateway/forms.py:148 app_gateway/forms.py:196 app_gateway/forms.py:237 -#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:138 -#: gatekeeper/forms.py:225 gatekeeper/forms.py:255 gatekeeper/forms.py:286 +#: gatekeeper/forms.py:42 gatekeeper/forms.py:76 gatekeeper/forms.py:140 +#: gatekeeper/forms.py:227 gatekeeper/forms.py:257 gatekeeper/forms.py:288 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -297,7 +297,7 @@ msgstr "Verejné" msgid "Protected" msgstr "Chránené" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:45 gatekeeper/models.py:109 #: templates/app_gateway/access_policy_type_select.html:41 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" @@ -477,7 +477,9 @@ msgstr "Politika prístupu bola úspešne odstránená." msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." -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." +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:278 msgid "Delete Access Policy" @@ -582,7 +584,7 @@ msgstr "Naozaj chcete odstrániť trasu \"%(name)s\" (%(path)s)?" msgid "IP Lock" msgstr "IP zámok" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:196 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:198 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -859,7 +861,7 @@ msgstr "Statický DNS" msgid "Invalid hostname." msgstr "Neplatný názov hostiteľa." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:199 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:201 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1197,7 +1199,7 @@ msgstr "Nastavenia firewall boli úspešne uložené" msgid "Username" msgstr "Používateľské meno" -#: gatekeeper/forms.py:18 gatekeeper/forms.py:269 +#: gatekeeper/forms.py:18 gatekeeper/forms.py:271 #: templates/gatekeeper/gatekeeper_list.html:62 #: templates/gatekeeper/gatekeeper_list.html:204 #: templates/wireguard/peer_list/peer_preview_modal.html:103 @@ -1243,78 +1245,82 @@ msgid "Global TOTP Secret" msgstr "Globálne TOTP tajomstvo" #: gatekeeper/forms.py:102 +msgid "Global TOTP Before Authentication" +msgstr "Globálne TOTP pred autentifikáciou" + +#: gatekeeper/forms.py:103 msgid "OIDC Provider URL" msgstr "URL poskytovateľa OIDC" -#: gatekeeper/forms.py:103 +#: gatekeeper/forms.py:104 msgid "OIDC Client ID" msgstr "ID klienta OIDC" -#: gatekeeper/forms.py:104 +#: gatekeeper/forms.py:105 msgid "OIDC Client Secret" msgstr "Secret klienta OIDC" -#: gatekeeper/forms.py:155 +#: gatekeeper/forms.py:157 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:157 +#: gatekeeper/forms.py:159 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:159 +#: gatekeeper/forms.py:161 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:165 +#: gatekeeper/forms.py:167 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:168 +#: gatekeeper/forms.py:170 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Polia OIDC musia byť prázdne pre autentifikáciu TOTP." -#: gatekeeper/forms.py:170 +#: gatekeeper/forms.py:172 msgid "TOTP secret is required for TOTP authentication." msgstr "TOTP tajomstvo je povinné pre autentifikáciu TOTP." -#: gatekeeper/forms.py:174 +#: gatekeeper/forms.py:176 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Na overenie tajomstva TOTP zadajte PIN." -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:181 msgid "Invalid TOTP PIN." msgstr "Neplatný PIN TOTP." -#: gatekeeper/forms.py:181 +#: gatekeeper/forms.py:183 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:184 +#: gatekeeper/forms.py:186 msgid "TOTP secret must be empty for OIDC authentication." msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu OIDC." -#: gatekeeper/forms.py:186 +#: gatekeeper/forms.py:188 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:195 gatekeeper/forms.py:237 gatekeeper/forms.py:268 +#: gatekeeper/forms.py:197 gatekeeper/forms.py:239 gatekeeper/forms.py:270 msgid "Authentication Method" msgstr "Metóda autentifikácie" -#: gatekeeper/forms.py:197 templates/gatekeeper/gatekeeper_list.html:257 +#: gatekeeper/forms.py:199 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" msgstr "Dĺžka prefixu" -#: gatekeeper/forms.py:198 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:200 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 #: templates/gatekeeper/gatekeeper_list.html:258 msgid "Action" msgstr "Akcia" -#: gatekeeper/forms.py:238 templates/gatekeeper/gatekeeper_list.html:221 +#: gatekeeper/forms.py:240 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" msgstr "Doména" @@ -1338,15 +1344,15 @@ msgstr "Zoznam IP adries" msgid "Shared/global TOTP secret key" msgstr "Zdieľaný/globálny tajný kľúč TOTP" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:69 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:70 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:270 +#: gatekeeper/models.py:109 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" msgstr "Povoliť" @@ -1415,116 +1421,125 @@ msgstr "Metóda autentifikácie bola úspešne uložená." #: gatekeeper/views.py:175 msgid "" "\n" -"
    Authentication Types
    \n" +"

    Authentication Types

    \n" "

    Select how users will authenticate through this method.

    \n" -"
      \n" -"
    • Local Password: Users will authenticate " -"using a standard username and password stored locally. Only one of this type " -"can be created.
    • \n" -"
    • TOTP (Time-Based One-Time Password): Users " -"will need to enter a rotating token from an authenticator app. Requires " -"setting a Global TOTP Secret.
    • \n" -"
    • OIDC (OpenID Connect): Users will " -"authenticate via an external identity provider (like Keycloak, Google, or " -"Authelia). Requires Provider URL, Client ID, and Client Secret.
    • \n" -"
    \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. Requires setting a Global TOTP Secret.
    If Global TOTP " +"Before Authentication is enabled, the PIN is required before the " +"username and password to help combat bruteforce attacks.

    \n" " " msgstr "" "\n" -"
    Typy autentifikácie
    \n" +"

    Typy autentifikácie

    \n" "

    Vyberte, ako sa budú používatelia autentifikovať prostredníctvom " "tejto metódy.

    \n" -"
      \n" -"
    • Miestne heslo: Používatelia sa budú " -"autentifikovať pomocou štandardného používateľského mena a hesla uloženého " -"lokálne. Je možné vytvoriť iba jeden tento typ.
    • \n" -"
    • TOTP (časovo založené jednorazové heslo): " -"Používatelia budú musieť zadať rotujúci token z autentifikačnej aplikácie. " -"Vyžaduje nastavenie globálneho tajomstva TOTP.
    • \n" -"
    • OIDC (OpenID Connect): Používatelia sa budú " -"autentifikovať prostredníctvom externého poskytovateľa identity (ako " -"Keycloak, Google alebo Authelia). Vyžaduje URL poskytovateľa, ID klienta a " -"Secret klienta.
    • \n" -"
    \n" +" \n" +"
    Miestne heslo
    \n" +"

    Používatelia sa budú autentifikovať pomocou štandardného " +"používateľského mena a hesla uloženého lokálne. Je možné vytvoriť iba jeden " +"tento typ.

    \n" +" \n" +"
    OIDC (OpenID Connect)
    \n" +"

    Používatelia sa budú autentifikovať prostredníctvom externého " +"poskytovateľa identity (ako Keycloak, Google alebo Authelia). Vyžaduje URL " +"poskytovateľa, ID klienta a Secret klienta.

    \n" +" \n" +"
    TOTP (Časovo založené jednorazové heslo)
    \n" +"

    Používatelia budú musieť zadať rotujúci token z autentifikačnej " +"aplikácie. Vyžaduje nastavenie globálneho tajomstva TOTP.
    Ak je " +"povolené Globálne TOTP pred autentifikáciou, PIN sa " +"vyžaduje pred používateľským menom a heslom, čo pomáha bojovať proti " +"útokom hrubou silou.

    \n" " " -#: gatekeeper/views.py:206 +#: gatekeeper/views.py:210 msgid "Authentication Method deleted successfully." msgstr "Metóda autentifikácie bola úspešne odstránená." -#: gatekeeper/views.py:211 +#: gatekeeper/views.py:215 msgid "Delete Authentication Method" msgstr "Odstrániť metódu autentifikácie" -#: gatekeeper/views.py:213 +#: gatekeeper/views.py:217 #, 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:263 +#: gatekeeper/views.py:267 msgid "Edit Allowed Domain" msgstr "Upraviť povolenú doménu" -#: gatekeeper/views.py:266 templates/gatekeeper/gatekeeper_list.html:186 +#: gatekeeper/views.py:270 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" msgstr "Pridať povolenú doménu" -#: gatekeeper/views.py:273 +#: gatekeeper/views.py:277 msgid "Allowed Domain saved successfully." msgstr "Povolená doména bola úspešne uložená." -#: gatekeeper/views.py:295 +#: gatekeeper/views.py:299 msgid "Allowed Domain deleted successfully." msgstr "Povolená doména bola úspešne odstránená." -#: gatekeeper/views.py:300 +#: gatekeeper/views.py:304 msgid "Delete Allowed Domain" msgstr "Odstrániť povolenú doménu" -#: gatekeeper/views.py:302 +#: gatekeeper/views.py:306 #, 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:316 +#: gatekeeper/views.py:320 msgid "Edit Allowed Email" msgstr "Upraviť povolený e-mail" -#: gatekeeper/views.py:319 templates/gatekeeper/gatekeeper_list.html:183 +#: gatekeeper/views.py:323 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" msgstr "Pridať povolený e-mail" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:330 msgid "Allowed Email saved successfully." msgstr "Povolený e-mail bol úspešne uložený." -#: gatekeeper/views.py:348 +#: gatekeeper/views.py:352 msgid "Allowed Email deleted successfully." msgstr "Povolený e-mail bol úspešne odstránený." -#: gatekeeper/views.py:353 +#: gatekeeper/views.py:357 msgid "Delete Allowed Email" msgstr "Odstrániť povolený e-mail" -#: gatekeeper/views.py:355 +#: gatekeeper/views.py:359 #, 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:369 +#: gatekeeper/views.py:373 msgid "Edit IP Address" msgstr "Upraviť IP adresu" -#: gatekeeper/views.py:372 templates/gatekeeper/gatekeeper_list.html:247 +#: gatekeeper/views.py:376 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Pridať IP adresu" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:383 msgid "IP Address saved successfully." msgstr "IP adresa bola úspešne uložená." -#: gatekeeper/views.py:384 +#: gatekeeper/views.py:388 msgid "" "\n" "
    IP Address List
    \n" @@ -1571,15 +1586,15 @@ msgstr "" "(napr. „Kancelárska sieť“, „Blokovaný útočník“).

    \n" " " -#: gatekeeper/views.py:420 +#: gatekeeper/views.py:424 msgid "IP Address deleted successfully." msgstr "IP adresa bola úspešne odstránená." -#: gatekeeper/views.py:425 +#: gatekeeper/views.py:429 msgid "Delete IP Address" msgstr "Odstrániť IP adresu" -#: gatekeeper/views.py:427 +#: gatekeeper/views.py:431 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "Naozaj chcete odstrániť IP adresu \"%(address)s\"?"