firewall rules/settings translation

This commit is contained in:
Eduardo Silva
2025-04-16 12:34:50 -03:00
parent dca75f05a4
commit c60da36047
8 changed files with 194 additions and 80 deletions

View File

@@ -153,10 +153,10 @@ class FirewallSettingsForm(forms.ModelForm):
if not interface.startswith('wg') and interface != 'lo':
interface_choices.append((interface, interface))
default_forward_policy = forms.ChoiceField(label='Default Forward Policy', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP')], initial='accept')
allow_peer_to_peer = forms.BooleanField(label='Allow Peer to Peer', required=False)
allow_instance_to_instance = forms.BooleanField(label='Allow Instance to Instance', required=False)
wan_interface = forms.ChoiceField(label='WAN Interface', choices=interface_choices, initial='eth0')
default_forward_policy = forms.ChoiceField(label=_('Default Forward Policy'), choices=[('accept', _('ACCEPT')), ('reject', _('REJECT')), ('drop', _('DROP'))], initial='accept')
allow_peer_to_peer = forms.BooleanField(label=_('Allow Peer to Peer'), required=False)
allow_instance_to_instance = forms.BooleanField(label=_('Allow Instance to Instance'), required=False)
wan_interface = forms.ChoiceField(label=_('WAN Interface'), choices=interface_choices, initial='eth0')
class Meta:
model = FirewallSettings

View File

@@ -1,6 +1,7 @@
import uuid
from django.db import models
from django.utils.translation import gettext_lazy as _
from wireguard.models import NETMASK_CHOICES
from wireguard.models import Peer, WireGuardInstance
@@ -58,7 +59,7 @@ class FirewallRule(models.Model):
state_untracked = models.BooleanField(default=False)
not_state = models.BooleanField(default=False)
rule_action = models.CharField(max_length=10, default='accept', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP'), ('masquerade', 'MASQUERADE')])
rule_action = models.CharField(max_length=10, default='accept', choices=[('accept', _('ACCEPT')), ('reject', _('REJECT')), ('drop', _('DROP')), ('masquerade', _('MASQUERADE'))])
sort_order = models.PositiveIntegerField(default=0)
created = models.DateTimeField(auto_now_add=True)
@@ -71,8 +72,8 @@ class FirewallRule(models.Model):
class FirewallSettings(models.Model):
name = models.CharField(max_length=6, default='global', unique=True)
default_forward_policy = models.CharField(max_length=6, default='accept', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP')])
default_output_policy = models.CharField(max_length=6, default='accept', choices=[('accept', 'ACCEPT'), ('reject', 'REJECT'), ('drop', 'DROP')])
default_forward_policy = models.CharField(max_length=6, default='accept', choices=[('accept', _('ACCEPT')), ('reject', _('REJECT')), ('drop', _('DROP'))])
default_output_policy = models.CharField(max_length=6, default='accept', choices=[('accept', _('ACCEPT')), ('reject', _('REJECT')), ('drop', _('DROP'))])
allow_peer_to_peer = models.BooleanField(default=True)
allow_instance_to_instance = models.BooleanField(default=True)
wan_interface = models.CharField(max_length=12, default='eth0')

View File

@@ -1,4 +1,5 @@
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from firewall.models import FirewallRule, FirewallSettings, RedirectRule
from wireguard.models import PeerAllowedIP, WireGuardInstance
@@ -40,7 +41,7 @@ def reset_firewall_to_default():
FirewallRule.objects.create(
firewall_chain='postrouting', sort_order=0, out_interface=firewall_settings.wan_interface, rule_action='masquerade',
description='Masquerade traffic from VPN to WAN',
description=_('Masquerade traffic from VPN to WAN'),
)
# This rule will now be fixed in the firewall header
@@ -50,19 +51,19 @@ def reset_firewall_to_default():
# )
FirewallRule.objects.create(
firewall_chain='forward', sort_order=1, rule_action='reject', description='Reject traffic to private networks exiting on WAN interface',
firewall_chain='forward', sort_order=1, rule_action='reject', description=_('Reject traffic to private networks exiting on WAN interface'),
in_interface='wg+', out_interface=firewall_settings.wan_interface, destination_ip='10.0.0.0', destination_netmask=8
)
FirewallRule.objects.create(
firewall_chain='forward', sort_order=2, rule_action='reject', description='Reject traffic to private networks exiting on WAN interface',
firewall_chain='forward', sort_order=2, rule_action='reject', description=_('Reject traffic to private networks exiting on WAN interface'),
in_interface='wg+', out_interface=firewall_settings.wan_interface, destination_ip='172.16.0.0', destination_netmask=12
)
FirewallRule.objects.create(
firewall_chain='forward', sort_order=3, rule_action='reject', description='Reject traffic to private networks exiting on WAN interface',
firewall_chain='forward', sort_order=3, rule_action='reject', description=_('Reject traffic to private networks exiting on WAN interface'),
in_interface='wg+', out_interface=firewall_settings.wan_interface, destination_ip='192.168.0.0', destination_netmask=16
)
FirewallRule.objects.create(
firewall_chain='forward', sort_order=10, rule_action='accept', description='Allow traffic from VPN to WAN',
firewall_chain='forward', sort_order=10, rule_action='accept', description=_('Allow traffic from VPN to WAN'),
in_interface='wg+', out_interface=firewall_settings.wan_interface
)
return

View File

@@ -76,7 +76,7 @@ def view_firewall_rule_list(request):
if current_chain not in ['forward', 'portforward', 'postrouting']:
current_chain = 'forward'
context = {
'page_title': 'Firewall Rule List',
'page_title': _('Firewall Rule List'),
'firewall_rule_list': FirewallRule.objects.filter(firewall_chain=current_chain).order_by('sort_order'),
'current_chain': current_chain,
'port_forward_list': RedirectRule.objects.all().order_by('port'),
@@ -90,7 +90,7 @@ def view_firewall_rule_list(request):
def manage_firewall_rule(request):
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=40).exists():
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
context = {'page_title': 'Manage Firewall Rule'}
context = {'page_title': _('Manage Firewall Rule')}
instance = None
uuid = request.GET.get('uuid', None)
if uuid:
@@ -108,9 +108,9 @@ def manage_firewall_rule(request):
if wireguard_instance:
wireguard_instance.pending_changes = True
wireguard_instance.save()
messages.success(request, 'Firewall rule deleted successfully')
messages.success(request, _('Firewall rule deleted successfully'))
else:
messages.warning(request, 'Error deleting Firewall rule|Confirmation did not match. Firewall rule was not deleted.')
messages.warning(request, _('Error deleting Firewall rule|Confirmation did not match. Firewall rule was not deleted.'))
return redirect('/firewall/rule_list/')
else:
current_chain = request.GET.get('chain', 'forward')
@@ -122,7 +122,7 @@ def manage_firewall_rule(request):
firewall_settings.pending_changes = True
firewall_settings.save()
form.save()
messages.success(request, 'Firewall rule saved successfully')
messages.success(request, _('Firewall rule saved successfully'))
# Marking wireguard_instance as having pending changes, not the best way to do this, but it works for now.
# I will improve it later.
wireguard_instance = WireGuardInstance.objects.all().first()
@@ -154,7 +154,7 @@ def manage_firewall_rule(request):
def view_manage_firewall_settings(request):
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=40).exists():
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
context = {'page_title': 'Manage Firewall Settings'}
context = {'page_title': _('Manage Firewall Settings')}
previous_firewall_chain = request.GET.get('chain')
if previous_firewall_chain not in ['forward', 'portforward', 'postrouting']:
previous_firewall_chain = 'forward'
@@ -170,7 +170,7 @@ def view_manage_firewall_settings(request):
form = FirewallSettingsForm(request.POST, instance=firewall_settings)
if form.is_valid():
form.save()
messages.success(request, 'Firewall settings saved successfully')
messages.success(request, _('Firewall settings saved successfully'))
# Marking wireguard_instance as having pending changes, not the best way to do this, but it works for now.
# I will improve it later.
wireguard_instance = WireGuardInstance.objects.all().first()