mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-04-19 00:45:16 +00:00
Add port forward field to redirect rule form and model
This commit is contained in:
parent
05e0f1e270
commit
a61b0128ec
@ -1,14 +1,17 @@
|
||||
from firewall.models import RedirectRule, FirewallRule, FirewallSettings
|
||||
from wireguard.models import Peer, WireGuardInstance, NETMASK_CHOICES
|
||||
from wgwadmlibrary.tools import list_network_interfaces
|
||||
from django import forms
|
||||
import re
|
||||
|
||||
from django import forms
|
||||
|
||||
from firewall.models import FirewallRule, FirewallSettings, RedirectRule
|
||||
from wgwadmlibrary.tools import list_network_interfaces
|
||||
from wireguard.models import Peer, WireGuardInstance
|
||||
|
||||
|
||||
class RedirectRuleForm(forms.ModelForm):
|
||||
description = forms.CharField(label='Description', required=False)
|
||||
protocol = forms.ChoiceField(label='Protocol', choices=[('tcp', 'TCP'), ('udp', 'UDP')], initial='tcp')
|
||||
port = forms.IntegerField(label='Port', initial=8080, min_value=1, max_value=65535)
|
||||
port_forward = forms.IntegerField(label='Port Forward', required=False, min_value=1, max_value=65535)
|
||||
add_forward_rule = forms.BooleanField(label='Add Forward Rule', required=False, initial=True)
|
||||
masquerade_source = forms.BooleanField(label='Masquerade Source (not recommended)', required=False)
|
||||
peer = forms.ModelChoiceField(label='Peer', queryset=Peer.objects.all(), required=False)
|
||||
@ -17,7 +20,7 @@ class RedirectRuleForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = RedirectRule
|
||||
fields = ['description', 'protocol', 'port', 'add_forward_rule', 'masquerade_source', 'peer', 'wireguard_instance', 'ip_address']
|
||||
fields = ['description', 'protocol', 'port', 'add_forward_rule', 'masquerade_source', 'peer', 'wireguard_instance', 'ip_address', 'port_forward']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(RedirectRuleForm, self).__init__(*args, **kwargs)
|
||||
@ -31,6 +34,7 @@ class RedirectRuleForm(forms.ModelForm):
|
||||
peer = cleaned_data.get('peer')
|
||||
ip_address = cleaned_data.get('ip_address')
|
||||
wireguard_instance = cleaned_data.get('wireguard_instance')
|
||||
port_forward = cleaned_data.get('port_forward')
|
||||
|
||||
if port == 8000 and protocol == 'tcp':
|
||||
raise forms.ValidationError("Port 8000 (tcp) is reserved for wireguard-webadmin.")
|
||||
|
18
firewall/migrations/0012_redirectrule_port_forward_to.py
Normal file
18
firewall/migrations/0012_redirectrule_port_forward_to.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.5 on 2025-03-13 00:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('firewall', '0011_firewallsettings_last_firewall_reset'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='redirectrule',
|
||||
name='port_forward_to',
|
||||
field=models.PositiveIntegerField(default=8080),
|
||||
),
|
||||
]
|
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.1.5 on 2025-03-13 11:30
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('firewall', '0012_redirectrule_port_forward_to'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='redirectrule',
|
||||
name='port_forward_to',
|
||||
),
|
||||
]
|
18
firewall/migrations/0014_redirectrule_port_forward.py
Normal file
18
firewall/migrations/0014_redirectrule_port_forward.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.5 on 2025-03-13 11:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('firewall', '0013_remove_redirectrule_port_forward_to'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='redirectrule',
|
||||
name='port_forward',
|
||||
field=models.CharField(blank=True, max_length=5, null=True),
|
||||
),
|
||||
]
|
@ -1,13 +1,17 @@
|
||||
from django.db import models
|
||||
from wireguard.models import Peer, WireGuardInstance
|
||||
from wireguard.models import NETMASK_CHOICES
|
||||
import uuid
|
||||
|
||||
from django.db import models
|
||||
|
||||
from wireguard.models import NETMASK_CHOICES
|
||||
from wireguard.models import Peer, WireGuardInstance
|
||||
|
||||
|
||||
class RedirectRule(models.Model):
|
||||
description = models.CharField(max_length=100, blank=True, null=True)
|
||||
protocol = models.CharField(max_length=3, default='tcp', choices=[('tcp', 'TCP'), ('udp', 'UDP')])
|
||||
port = models.PositiveIntegerField(default=8080)
|
||||
port_forward = models.CharField(max_length=5, blank=True, null=True)
|
||||
|
||||
add_forward_rule = models.BooleanField(default=True)
|
||||
masquerade_source = models.BooleanField(default=False)
|
||||
peer = models.ForeignKey(Peer, on_delete=models.CASCADE, blank=True, null=True)
|
||||
|
@ -31,11 +31,13 @@
|
||||
<input type="number" class="form-control" id="id_port" name="port" value="{{ form.port.value|default_if_none:'' }}">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_port_forward">Destination Port</label>
|
||||
<input type="number" class="form-control" id="id_port_forward" name="port_forward" value="{{ form.port_forward.value|default_if_none:'' }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="destinationType">Destination Type:</label>
|
||||
<label for="destinationType">Destination Type</label>
|
||||
<select class="form-control" name="destinationType" id="destinationType">
|
||||
<option value="peer">Peer</option>
|
||||
<option value="ipAddress" {% if instance.ip_address %}selected{% endif %}>IP Address</option>
|
||||
|
Loading…
x
Reference in New Issue
Block a user