mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-04-19 08:55:12 +00:00
55 lines
2.5 KiB
Python
55 lines
2.5 KiB
Python
from django.shortcuts import render, get_object_or_404, redirect
|
|
from firewall.models import RedirectRule
|
|
from firewall.forms import RedirectRuleForm
|
|
from django.contrib import messages
|
|
from wireguard.models import WireGuardInstance
|
|
from user_manager.models import UserAcl
|
|
|
|
|
|
def view_redirect_rule_list(request):
|
|
wireguard_instances = WireGuardInstance.objects.all().order_by('instance_id')
|
|
if wireguard_instances.filter(pending_changes=True).exists():
|
|
pending_changes_warning = True
|
|
else:
|
|
pending_changes_warning = False
|
|
context = {
|
|
'page_title': 'Port Forward List',
|
|
'pending_changes_warning': pending_changes_warning,
|
|
'redirect_rule_list': RedirectRule.objects.all().order_by('wireguard_instance', 'protocol', 'port')
|
|
}
|
|
return render(request, 'firewall/redirect_rule_list.html', context=context)
|
|
|
|
|
|
def manage_redirect_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 Port Forward'}
|
|
instance = None
|
|
uuid = request.GET.get('uuid', None)
|
|
if uuid:
|
|
instance = get_object_or_404(RedirectRule, uuid=uuid)
|
|
if request.GET.get('action') == 'delete':
|
|
if request.GET.get('confirmation') == instance.protocol + str(instance.port):
|
|
instance.wireguard_instance.pending_changes = True
|
|
instance.wireguard_instance.save()
|
|
instance.delete()
|
|
messages.success(request, 'Port Forward rule deleted successfully')
|
|
else:
|
|
messages.warning(request, 'Error deleting Port Forward rule|Confirmation did not match. Port Forward rule was not deleted.')
|
|
return redirect('/firewall/port_forward/')
|
|
|
|
if request.method == 'POST':
|
|
form = RedirectRuleForm(request.POST, instance=instance)
|
|
if form.is_valid():
|
|
wireguard_instance = form.cleaned_data['wireguard_instance']
|
|
wireguard_instance.pending_changes = True
|
|
wireguard_instance.save()
|
|
form.save()
|
|
messages.success(request, 'Port Forward rule saved successfully')
|
|
return redirect('/firewall/port_forward/')
|
|
else:
|
|
form = RedirectRuleForm(instance=instance)
|
|
context['form'] = form
|
|
context['instance'] = instance
|
|
|
|
return render(request, 'firewall/manage_redirect_rule.html', context=context) |