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
|
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):
|
class RedirectRuleForm(forms.ModelForm):
|
||||||
description = forms.CharField(label='Description', required=False)
|
description = forms.CharField(label='Description', required=False)
|
||||||
protocol = forms.ChoiceField(label='Protocol', choices=[('tcp', 'TCP'), ('udp', 'UDP')], initial='tcp')
|
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 = 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)
|
add_forward_rule = forms.BooleanField(label='Add Forward Rule', required=False, initial=True)
|
||||||
masquerade_source = forms.BooleanField(label='Masquerade Source (not recommended)', required=False)
|
masquerade_source = forms.BooleanField(label='Masquerade Source (not recommended)', required=False)
|
||||||
peer = forms.ModelChoiceField(label='Peer', queryset=Peer.objects.all(), required=False)
|
peer = forms.ModelChoiceField(label='Peer', queryset=Peer.objects.all(), required=False)
|
||||||
@ -17,7 +20,7 @@ class RedirectRuleForm(forms.ModelForm):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RedirectRule
|
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):
|
def __init__(self, *args, **kwargs):
|
||||||
super(RedirectRuleForm, self).__init__(*args, **kwargs)
|
super(RedirectRuleForm, self).__init__(*args, **kwargs)
|
||||||
@ -31,6 +34,7 @@ class RedirectRuleForm(forms.ModelForm):
|
|||||||
peer = cleaned_data.get('peer')
|
peer = cleaned_data.get('peer')
|
||||||
ip_address = cleaned_data.get('ip_address')
|
ip_address = cleaned_data.get('ip_address')
|
||||||
wireguard_instance = cleaned_data.get('wireguard_instance')
|
wireguard_instance = cleaned_data.get('wireguard_instance')
|
||||||
|
port_forward = cleaned_data.get('port_forward')
|
||||||
|
|
||||||
if port == 8000 and protocol == 'tcp':
|
if port == 8000 and protocol == 'tcp':
|
||||||
raise forms.ValidationError("Port 8000 (tcp) is reserved for wireguard-webadmin.")
|
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
|
import uuid
|
||||||
|
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
from wireguard.models import NETMASK_CHOICES
|
||||||
|
from wireguard.models import Peer, WireGuardInstance
|
||||||
|
|
||||||
|
|
||||||
class RedirectRule(models.Model):
|
class RedirectRule(models.Model):
|
||||||
description = models.CharField(max_length=100, blank=True, null=True)
|
description = models.CharField(max_length=100, blank=True, null=True)
|
||||||
protocol = models.CharField(max_length=3, default='tcp', choices=[('tcp', 'TCP'), ('udp', 'UDP')])
|
protocol = models.CharField(max_length=3, default='tcp', choices=[('tcp', 'TCP'), ('udp', 'UDP')])
|
||||||
port = models.PositiveIntegerField(default=8080)
|
port = models.PositiveIntegerField(default=8080)
|
||||||
|
port_forward = models.CharField(max_length=5, blank=True, null=True)
|
||||||
|
|
||||||
add_forward_rule = models.BooleanField(default=True)
|
add_forward_rule = models.BooleanField(default=True)
|
||||||
masquerade_source = models.BooleanField(default=False)
|
masquerade_source = models.BooleanField(default=False)
|
||||||
peer = models.ForeignKey(Peer, on_delete=models.CASCADE, blank=True, null=True)
|
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:'' }}">
|
<input type="number" class="form-control" id="id_port" name="port" value="{{ form.port.value|default_if_none:'' }}">
|
||||||
</div>
|
</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">
|
<div class="form-group">
|
||||||
<label for="destinationType">Destination Type:</label>
|
<label for="destinationType">Destination Type</label>
|
||||||
<select class="form-control" name="destinationType" id="destinationType">
|
<select class="form-control" name="destinationType" id="destinationType">
|
||||||
<option value="peer">Peer</option>
|
<option value="peer">Peer</option>
|
||||||
<option value="ipAddress" {% if instance.ip_address %}selected{% endif %}>IP Address</option>
|
<option value="ipAddress" {% if instance.ip_address %}selected{% endif %}>IP Address</option>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user