From 0f0964765efc0c3c22d4d444b1361fc21667b0e8 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 16 Apr 2025 14:34:46 -0300 Subject: [PATCH] translation for firewall rule management. --- firewall/forms.py | 76 +++-- locale/pt_BR/LC_MESSAGES/django.mo | Bin 40793 -> 48400 bytes locale/pt_BR/LC_MESSAGES/django.po | 309 ++++++++++++++++--- templates/firewall/manage_firewall_rule.html | 36 ++- 4 files changed, 336 insertions(+), 85 deletions(-) diff --git a/firewall/forms.py b/firewall/forms.py index 0651b98..0ed2788 100644 --- a/firewall/forms.py +++ b/firewall/forms.py @@ -78,36 +78,62 @@ class FirewallRuleForm(forms.ModelForm): wireguard_instance_interface = 'wg'+ str(wireguard_instance.instance_id) interface_list.append((wireguard_instance_interface, wireguard_instance_interface)) - interface_list.append(('wg+', 'wg+ (Any WireGuard Interface)')) + interface_list.append(('wg+', _('wg+ (Any WireGuard Interface)'))) - description = forms.CharField(label='Description', required=False) - firewall_chain = forms.ChoiceField(label='Firewall Chain', choices=[('forward', 'FORWARD'), ('postrouting', 'POSTROUTING (nat)')]) - in_interface = forms.ChoiceField(label='In Interface', required=False) - out_interface = forms.ChoiceField(label='Out Interface', required=False) - source_ip = forms.GenericIPAddressField(label='Source IP', required=False) - source_netmask = forms.IntegerField(label='Source Netmask', initial=32, min_value=0, max_value=32) - source_peer = forms.ModelMultipleChoiceField(label='Source Peer', queryset=Peer.objects.all(), required=False) - source_peer_include_networks = forms.BooleanField(label='Source Peer Include Networks', required=False) - not_source = forms.BooleanField(label='Not Source', required=False) - destination_ip = forms.GenericIPAddressField(label='Destination IP', required=False) - destination_netmask = forms.IntegerField(label='Destination Netmask', initial=32, min_value=0, max_value=32) - destination_peer = forms.ModelMultipleChoiceField(label='Destination Peer', queryset=Peer.objects.all(), required=False) - destination_peer_include_networks = forms.BooleanField(label='Destination Peer Include Networks', required=False) - not_destination = forms.BooleanField(label='Not Destination', required=False) - protocol = forms.ChoiceField(label='Protocol', choices=[('', 'all'), ('tcp', 'TCP'), ('udp', 'UDP'), ('both', 'TCP+UDP'), ('icmp', 'ICMP')], required=False) - destination_port = forms.CharField(label='Destination Port', required=False) - state_new = forms.BooleanField(label='State NEW', required=False) - state_related = forms.BooleanField(label='State RELATED', required=False) - state_established = forms.BooleanField(label='State ESTABLISHED', required=False) - state_invalid = forms.BooleanField(label='State INVALID', required=False) - state_untracked = forms.BooleanField(label='State UNTRACKED', required=False) - not_state = forms.BooleanField(label='Not State', required=False) - rule_action = forms.ChoiceField(label='Rule Action', initial='accept', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP'), ('masquerade', 'MASQUERADE')]) - sort_order = forms.IntegerField(label='Sort Order', initial=0, min_value=0) + description = forms.CharField(required=False) + firewall_chain = forms.ChoiceField(choices=[('forward', 'FORWARD'), ('postrouting', 'POSTROUTING (nat)')]) + in_interface = forms.ChoiceField(required=False) + out_interface = forms.ChoiceField(required=False) + source_ip = forms.GenericIPAddressField(required=False) + source_netmask = forms.IntegerField(initial=32, min_value=0, max_value=32) + source_peer = forms.ModelMultipleChoiceField(queryset=Peer.objects.all(), required=False) + source_peer_include_networks = forms.BooleanField(required=False) + not_source = forms.BooleanField(required=False) + destination_ip = forms.GenericIPAddressField(required=False) + destination_netmask = forms.IntegerField(initial=32, min_value=0, max_value=32) + destination_peer = forms.ModelMultipleChoiceField(queryset=Peer.objects.all(), required=False) + destination_peer_include_networks = forms.BooleanField(required=False) + not_destination = forms.BooleanField(required=False) + protocol = forms.ChoiceField(choices=[('', 'all'), ('tcp', 'TCP'), ('udp', 'UDP'), ('both', 'TCP+UDP'), ('icmp', 'ICMP')], required=False) + destination_port = forms.CharField(required=False) + state_new = forms.BooleanField(required=False) + state_related = forms.BooleanField(required=False) + state_established = forms.BooleanField(required=False) + state_invalid = forms.BooleanField(required=False) + state_untracked = forms.BooleanField(required=False) + not_state = forms.BooleanField(required=False) + rule_action = forms.ChoiceField(initial='accept', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP'), ('masquerade', 'MASQUERADE')]) + sort_order = forms.IntegerField(initial=0, min_value=0) self.fields['firewall_chain'].initial = current_chain self.fields['in_interface'].choices = interface_list self.fields['out_interface'].choices = interface_list + self.fields['description'].label = _('Description') + self.fields['firewall_chain'].label = _('Firewall Chain') + self.fields['in_interface'].label = _('In Interface') + self.fields['out_interface'].label = _('Out Interface') + self.fields['source_ip'].label = _('Source IP') + self.fields['source_netmask'].label = _('Netmask') + self.fields['source_peer'].label = _('Source Peer') + self.fields['source_peer_include_networks'].label = _('Source Peer Include Networks') + self.fields['not_source'].label = _('Not Source') + self.fields['destination_ip'].label = _('Destination IP') + self.fields['destination_netmask'].label = _('Netmask') + self.fields['destination_peer'].label = _('Destination Peer') + self.fields['destination_peer_include_networks'].label = _('Destination Peer Include Networks') + self.fields['not_destination'].label = _('Not Destination') + self.fields['protocol'].label = _('Protocol') + self.fields['destination_port'].label = _('Destination Port') + self.fields['state_new'].label = _('New') + self.fields['state_related'].label = _('Related') + self.fields['state_established'].label = _('Established') + self.fields['state_invalid'].label = _('Invalid') + self.fields['state_untracked'].label = _('Untracked') + self.fields['not_state'].label = _('Not State') + self.fields['rule_action'].label = _('Rule Action') + self.fields['sort_order'].label = _('Sort Order') + + class Meta: model = FirewallRule fields = ['description', 'firewall_chain', 'in_interface', 'out_interface', 'source_ip', 'source_netmask', 'source_peer', 'source_peer_include_networks', 'not_source', 'destination_ip', 'destination_netmask', 'destination_peer', 'destination_peer_include_networks', 'not_destination', 'protocol', 'destination_port', 'state_new', 'state_related', 'state_established', 'state_invalid', 'state_untracked', 'not_state', 'rule_action', 'sort_order'] diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index f42bcbe6ef905bc7669bf50a237ba54c03eef508..56e14c85e42ac9984e74fc182b0316ac269f71af 100644 GIT binary patch delta 13877 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 G#{U7wYSP{S diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 2a6599d..77c33ca 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-16 12:32-0300\n" +"POT-Creation-Date: 2025-04-16 14:32-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,6 +68,7 @@ msgid "Secondary DNS" msgstr "DNS Secundário" #: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109 +#: templates/firewall/manage_firewall_rule.html:380 #: templates/firewall/manage_firewall_settings.html:60 #: templates/firewall/manage_redirect_rule.html:85 #: templates/wireguard/wireguard_manage_ip.html:42 @@ -82,6 +83,7 @@ msgid "Resolver Settings" msgstr "Resolução de DNS" #: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134 +#: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 #: templates/firewall/manage_redirect_rule.html:84 #: templates/wireguard/wireguard_manage_ip.html:41 @@ -105,6 +107,7 @@ msgid "IP Address" msgstr "Endereço IP" #: dns/forms.py:68 dns/forms.py:110 +#: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 #: templates/wireguard/wireguard_manage_ip.html:43 #: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48 @@ -122,7 +125,8 @@ msgstr "DNS Estático" msgid "Name" msgstr "Nome" -#: dns/forms.py:112 templates/dns/static_host_list.html:69 +#: dns/forms.py:112 firewall/forms.py:111 +#: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 #: templates/firewall/manage_redirect_rule.html:19 msgid "Description" @@ -248,11 +252,109 @@ msgid "IP Address cannot be used without selecting a WireGuard instance." msgstr "" "Endereço IP não pode ser usado sem selecionar uma instância do WireGuard." -#: firewall/forms.py:156 +#: firewall/forms.py:81 +msgid "wg+ (Any WireGuard Interface)" +msgstr "wg+ (Qualquer Interface do WireGuard)" + +#: firewall/forms.py:112 +msgid "Firewall Chain" +msgstr "Cadeia do Firewall" + +#: firewall/forms.py:113 +msgid "In Interface" +msgstr "Interface de Entrada" + +#: firewall/forms.py:114 +msgid "Out Interface" +msgstr "Interface de Saída" + +#: firewall/forms.py:115 +msgid "Source IP" +msgstr "IP de Origem" + +#: firewall/forms.py:116 firewall/forms.py:121 wireguard/forms.py:18 +#: wireguard_peer/forms.py:30 +msgid "Netmask" +msgstr "Máscara de Rede" + +#: firewall/forms.py:117 +msgid "Source Peer" +msgstr "Peer de Origem" + +#: firewall/forms.py:118 +msgid "Source Peer Include Networks" +msgstr "Incluir Redes do Peer de Origem" + +#: firewall/forms.py:119 +msgid "Not Source" +msgstr "Não Origem" + +#: firewall/forms.py:120 +msgid "Destination IP" +msgstr "IP de Destino" + +#: firewall/forms.py:122 +msgid "Destination Peer" +msgstr "Peer de Destino" + +#: firewall/forms.py:123 +msgid "Destination Peer Include Networks" +msgstr "Incluir Redes do Peer de Destino" + +#: firewall/forms.py:124 +msgid "Not Destination" +msgstr "Não Destino" + +#: firewall/forms.py:125 templates/firewall/firewall_rule_list.html:44 +#: templates/firewall/manage_firewall_rule.html:263 +#: templates/firewall/manage_redirect_rule.html:22 +#: templates/firewall/redirect_rule_list.html:13 +msgid "Protocol" +msgstr "Protocolo" + +#: firewall/forms.py:126 templates/firewall/manage_redirect_rule.html:35 +msgid "Destination Port" +msgstr "Porta de Destino" + +#: firewall/forms.py:127 templates/firewall/firewall_rule_list.html:141 +msgid "New" +msgstr "Novo" + +#: firewall/forms.py:128 templates/firewall/firewall_rule_list.html:60 +#: templates/firewall/firewall_rule_list.html:142 +msgid "Related" +msgstr "Relacionado" + +#: firewall/forms.py:129 templates/firewall/firewall_rule_list.html:61 +#: templates/firewall/firewall_rule_list.html:143 +msgid "Established" +msgstr "Estabelecido" + +#: firewall/forms.py:130 templates/firewall/firewall_rule_list.html:144 +msgid "Invalid" +msgstr "Inválido" + +#: firewall/forms.py:131 templates/firewall/firewall_rule_list.html:145 +msgid "Untracked" +msgstr "Não rastreado" + +#: firewall/forms.py:132 +msgid "Not State" +msgstr "Não Estado" + +#: firewall/forms.py:133 +msgid "Rule Action" +msgstr "Ação da Regra" + +#: firewall/forms.py:134 +msgid "Sort Order" +msgstr "Ordem de Classificação" + +#: firewall/forms.py:182 msgid "Default Forward Policy" msgstr "Política Padrão (Forward)" -#: firewall/forms.py:156 firewall/models.py:62 firewall/models.py:75 +#: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:63 #: templates/firewall/firewall_rule_list.html:91 #: templates/firewall/firewall_rule_list.html:168 @@ -260,26 +362,26 @@ msgstr "Política Padrão (Forward)" msgid "ACCEPT" msgstr "ACEITA" -#: firewall/forms.py:156 firewall/models.py:62 firewall/models.py:75 +#: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:170 #: templates/firewall/firewall_rule_list.html:187 msgid "REJECT" msgstr "REJEITA" -#: firewall/forms.py:156 firewall/models.py:62 firewall/models.py:75 +#: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 msgid "DROP" msgstr "DESCARTA" -#: firewall/forms.py:157 +#: firewall/forms.py:183 msgid "Allow Peer to Peer" msgstr "Permitir tráfego entre Peers" -#: firewall/forms.py:158 +#: firewall/forms.py:184 msgid "Allow Instance to Instance" msgstr "Permitir tráfego entre Instâncias" -#: firewall/forms.py:159 +#: firewall/forms.py:185 msgid "WAN Interface" msgstr "Interface WAN" @@ -511,20 +613,16 @@ msgid "Out" msgstr "Saída" #: templates/firewall/firewall_rule_list.html:42 +#: templates/firewall/manage_firewall_rule.html:141 msgid "Source" msgstr "Origem" #: templates/firewall/firewall_rule_list.html:43 +#: templates/firewall/manage_firewall_rule.html:202 #: templates/firewall/redirect_rule_list.html:15 msgid "Destination" msgstr "Destino" -#: templates/firewall/firewall_rule_list.html:44 -#: templates/firewall/manage_redirect_rule.html:22 -#: templates/firewall/redirect_rule_list.html:13 -msgid "Protocol" -msgstr "Protocolo" - #: templates/firewall/firewall_rule_list.html:45 #: templates/firewall/manage_redirect_rule.html:30 #: templates/firewall/redirect_rule_list.html:14 @@ -537,6 +635,7 @@ msgid "State" msgstr "Estado" #: templates/firewall/firewall_rule_list.html:47 +#: templates/firewall/manage_firewall_rule.html:360 msgid "Action" msgstr "Ação" @@ -549,33 +648,11 @@ msgstr "Regra Automática: Permitir tráfego estabelecido/relacionado" msgid "all" msgstr "Todos" -#: templates/firewall/firewall_rule_list.html:60 -#: templates/firewall/firewall_rule_list.html:142 -msgid "Related" -msgstr "Relacionado" - -#: templates/firewall/firewall_rule_list.html:61 -#: templates/firewall/firewall_rule_list.html:143 -msgid "Established" -msgstr "Estabelecido" - #: templates/firewall/firewall_rule_list.html:71 #: templates/firewall/firewall_rule_list.html:97 msgid "Automatic Rule: Port forward." msgstr "Regra Automática: Encaminhamento de Porta." -#: templates/firewall/firewall_rule_list.html:141 -msgid "New" -msgstr "Novo" - -#: templates/firewall/firewall_rule_list.html:144 -msgid "Invalid" -msgstr "Inválido" - -#: templates/firewall/firewall_rule_list.html:145 -msgid "Untracked" -msgstr "Não rastreado" - #: templates/firewall/firewall_rule_list.html:158 msgid "Automatic Rule: Firewall Settings Peer to Peer traffic" msgstr "Regra Automática: Configurações de Firewall tráfego entre Peers" @@ -597,6 +674,156 @@ msgstr "Configuração de Firewall" msgid "Display automatic rules" msgstr "Mostrar regras automáticas" +#: templates/firewall/manage_firewall_rule.html:18 +msgid "General" +msgstr "Geral" + +#: templates/firewall/manage_firewall_rule.html:79 +msgid "" +"\n" +"
Advanced VPN Firewall Configuration\n" +"

\n" +" This interface serves as a " +"comprehensive tool for managing firewall rules, enabling users to implement " +"advanced traffic policies between VPN peers and networks. It simplifies " +"establishing firewall rules, packet filtering, and NAT configurations, " +"allowing for precise control over network security. Users can define source " +"and destination IP addresses, ports, protocols, and actions to tailor " +"traffic flow, ensuring a secure and efficient networking environment.\n" +"

\n" +" " +msgstr "" +"\n" +"
Configuração Avançada do Firewall da " +"VPN
\n" +"

\n" +" Esta interface serve como uma " +"ferramenta abrangente para gerenciar regras de firewall, permitindo que os " +"usuários implementem políticas de tráfego avançadas entre peers de VPN e " +"redes. Ela simplifica o estabelecimento de regras de firewall, o filtro de " +"pacotes e as configurações de NAT, possibilitando um controle preciso sobre " +"a segurança da rede. Os usuários podem definir endereços IP de origem e " +"destino, portas, protocolos e ações para ajustar o fluxo de tráfego, " +"garantindo um ambiente de rede seguro e eficiente.\n" +"

\n" +" " + +#: templates/firewall/manage_firewall_rule.html:100 +msgid "Interface" +msgstr "Interface" + +#: templates/firewall/manage_firewall_rule.html:179 +msgid "" +"\n" +"
Source Selection
\n" +"

\n" +" You have the option to apply this " +"rule to a specific IP address or network and/or to multiple peers.

\n" +" Enabling the \"Include peer " +"networks\" option will automatically include all Allowed IPs associated with " +"each selected peer.

\n" +" Please note that selecting multiple " +"peers with included networks on both the source and destination ends may " +"result in a rapid increase in the number of firewall rules generated, " +"depending on your configuration.

\n" +" The \"Not Source\" option negates " +"the selected source IP, network, or peer(s).\n" +"

\n" +" " +msgstr "" +"\n" +"
Seleção de Origem
\n" +"

\n" +" Você tem a opção de aplicar esta " +"regra a um endereço IP ou rede específica e/ou a múltiplos peers.

\n" +" Habilitar a opção \"Include peer " +"networks\" irá incluir automaticamente todos os IPs permitidos associados a " +"cada peer selecionado.

\n" +" Por favor, note que selecionar " +"múltiplos peers com redes incluídas tanto na origem quanto no destino pode " +"resultar em um rápido aumento no número de regras de firewall geradas, " +"dependendo da sua configuração.

\n" +" A opção \"Not Source\" nega o " +"endereço IP, rede ou peer(s) selecionado(s).\n" +"

\n" +" " + +#: templates/firewall/manage_firewall_rule.html:240 +msgid "" +"\n" +"
Destination Selection
\n" +"

\n" +" You have the option to apply this " +"rule to a specific IP address or network and/or to multiple peers as the " +"destination.

\n" +" Enabling the \"Include peer " +"networks\" option will automatically include all Allowed IPs associated with " +"each selected peer as the destination.

\n" +" Please note that selecting multiple " +"peers with included networks on both the source and destination ends may " +"result in a rapid increase in the number of firewall rules generated, " +"depending on your configuration.

\n" +" The \"Not Destination\" option " +"negates the selected destination IP, network, or peer(s).\n" +"

\n" +" " +msgstr "" +"\n" +"
Seleção de Destino
\n" +"

\n" +" Você tem a opção de aplicar esta " +"regra a um endereço IP ou rede específica e/ou a múltiplos peers como " +"destino.

\n" +" Habilitar a opção \"Include peer " +"networks\" irá incluir automaticamente todos os IPs permitidos associados a " +"cada peer selecionado como destino.

\n" +" Por favor, note que selecionar " +"múltiplos peers com redes incluídas tanto na origem quanto no destino pode " +"resultar em um rápido aumento no número de regras de firewall geradas, " +"dependendo da sua configuração.

\n" +" A opção \"Not Destination\" nega o " +"endereço IP, rede ou peer(s) selecionado(s).\n" +"

\n" +" " + +#: templates/firewall/manage_firewall_rule.html:297 +msgid "" +"\n" +"
Protocol and Port
\n" +"

\n" +" Only the most commonly used " +"protocols are listed here. If you require a specific protocol, please open " +"an issue on GitHub.

\n" +" Selecting TCP+UDP will result in the " +"duplication of generated rules.

\n" +" Ports can be specified as single " +"numbers (e.g., 8080) or as ranges (e.g., 8001:8999).\n" +"

\n" +" " +msgstr "" +"\n" +"
Protocolo e Porta
\n" +"

\n" +" Apenas os protocolos mais comumente " +"utilizados estão listados aqui. Se você precisar de um protocolo específico, " +"por favor, abra uma issue no GitHub.

\n" +" Selecionar TCP+UDP resultará na " +"duplicação das regras geradas.

\n" +" As portas podem ser especificadas " +"como números individuais (por exemplo, 8080) ou como intervalos (por " +"exemplo, 8001:8999).\n" +"

\n" +" " + +#: templates/firewall/manage_firewall_rule.html:320 +msgid "Packet State" +msgstr "Estado do Pacote" + +#: templates/firewall/manage_firewall_rule.html:471 +msgid "Please type 'delete' to remove this firewall rule." +msgstr "Por favor, digite 'delete' para remover esta regra de firewall." + #: templates/firewall/manage_firewall_settings.html:61 msgid "Reset firewall to default" msgstr "Redefinir firewall para o padrão" @@ -611,10 +838,6 @@ msgstr "" "Você tem certeza que deseja continuar?\\n\\nDigite 'delete all rules and " "reset firewall' para confirmar." -#: templates/firewall/manage_redirect_rule.html:35 -msgid "Destination Port" -msgstr "Porta de Destino" - #: templates/firewall/manage_redirect_rule.html:40 msgid "Destination Type" msgstr "Tipo de Destino" @@ -1609,10 +1832,6 @@ msgstr "Porta" msgid "Internal IP Address" msgstr "Endereço IP Interno" -#: wireguard/forms.py:18 wireguard_peer/forms.py:30 -msgid "Netmask" -msgstr "Máscara de Rede" - #: wireguard/forms.py:19 msgid "Post Up" msgstr "Post Up" diff --git a/templates/firewall/manage_firewall_rule.html b/templates/firewall/manage_firewall_rule.html index 840152f..04a0e11 100644 --- a/templates/firewall/manage_firewall_rule.html +++ b/templates/firewall/manage_firewall_rule.html @@ -1,10 +1,11 @@ {% extends "base.html" %} +{% load i18n %} {% block content %}
-

Manage Firewall Rule

+

{{ page_title }}

{% csrf_token %} @@ -14,7 +15,7 @@

@@ -74,10 +75,12 @@
+ {% blocktrans %}
Advanced VPN Firewall Configuration

This interface serves as a comprehensive tool for managing firewall rules, enabling users to implement advanced traffic policies between VPN peers and networks. It simplifies establishing firewall rules, packet filtering, and NAT configurations, allowing for precise control over network security. Users can define source and destination IP addresses, ports, protocols, and actions to tailor traffic flow, ensuring a secure and efficient networking environment.

+ {% endblocktrans %}
@@ -93,7 +96,7 @@

@@ -134,7 +137,7 @@

@@ -172,6 +175,7 @@
+ {% blocktrans %}
Source Selection

You have the option to apply this rule to a specific IP address or network and/or to multiple peers.

@@ -179,6 +183,7 @@ Please note that selecting multiple peers with included networks on both the source and destination ends may result in a rapid increase in the number of firewall rules generated, depending on your configuration.

The "Not Source" option negates the selected source IP, network, or peer(s).

+ {% endblocktrans %}
@@ -193,7 +198,7 @@

@@ -231,6 +236,7 @@
+ {% blocktrans %}
Destination Selection

You have the option to apply this rule to a specific IP address or network and/or to multiple peers as the destination.

@@ -238,6 +244,7 @@ Please note that selecting multiple peers with included networks on both the source and destination ends may result in a rapid increase in the number of firewall rules generated, depending on your configuration.

The "Not Destination" option negates the selected destination IP, network, or peer(s).

+ {% endblocktrans %}
@@ -252,7 +259,7 @@

@@ -286,15 +293,14 @@
+ {% blocktrans %}
Protocol and Port

Only the most commonly used protocols are listed here. If you require a specific protocol, please open an issue on GitHub.

Selecting TCP+UDP will result in the duplication of generated rules.

Ports can be specified as single numbers (e.g., 8080) or as ranges (e.g., 8001:8999).

- - - + {% endblocktrans %}
@@ -310,7 +316,7 @@

@@ -350,7 +356,7 @@

@@ -369,10 +375,10 @@ @@ -461,7 +467,7 @@