2025-02-27 13:24:09 -03:00
|
|
|
from django.conf import settings
|
2025-02-27 22:41:20 -03:00
|
|
|
from django.contrib import messages
|
2025-04-16 10:18:23 -03:00
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from django.shortcuts import redirect, render
|
|
|
|
from django.utils import timezone
|
|
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
|
|
from user_manager.models import UserAcl
|
2025-02-27 23:26:44 -03:00
|
|
|
from wireguard_tools.models import EmailSettings
|
2025-04-16 10:18:23 -03:00
|
|
|
from .forms import EmailSettingsForm, InviteSettingsForm
|
|
|
|
from .models import InviteSettings, PeerInvite
|
2025-02-27 10:51:07 -03:00
|
|
|
|
2025-02-27 13:24:09 -03:00
|
|
|
|
|
|
|
@login_required
|
2025-02-27 22:41:20 -03:00
|
|
|
def view_vpn_invite_list(request):
|
2025-02-27 13:24:09 -03:00
|
|
|
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
|
|
|
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
|
|
|
if request.GET.get('invite') and request.GET.get('action') == 'delete':
|
|
|
|
PeerInvite.objects.filter(uuid=request.GET.get('invite')).delete()
|
|
|
|
return redirect('/vpn_invite/')
|
|
|
|
|
|
|
|
try:
|
|
|
|
default_invite_url = f'{settings.CSRF_TRUSTED_ORIGINS[1]}/invite/'
|
|
|
|
except:
|
|
|
|
default_invite_url = 'https://wireguard-webadmin.example.com/invite/'
|
|
|
|
|
2025-04-16 10:18:23 -03:00
|
|
|
invite_settings, invite_settings_created = InviteSettings.objects.get_or_create(
|
2025-02-27 13:24:09 -03:00
|
|
|
name='default_settings', defaults={'invite_url': default_invite_url,}
|
|
|
|
)
|
|
|
|
|
|
|
|
if invite_settings.invite_url.startswith('http://'):
|
|
|
|
invite_settings.invite_url = invite_settings.invite_url.replace('http://', 'https://')
|
|
|
|
invite_settings.save()
|
|
|
|
peer_invite_list = PeerInvite.objects.all().order_by('invite_expiration')
|
|
|
|
peer_invite_list.filter(invite_expiration__lt=timezone.now()).delete()
|
|
|
|
data = {
|
2025-04-16 10:18:23 -03:00
|
|
|
'page_title': _('VPN Invite'),
|
2025-02-27 13:24:09 -03:00
|
|
|
'peer_invite_list': peer_invite_list,
|
|
|
|
}
|
|
|
|
|
2025-02-27 22:41:20 -03:00
|
|
|
return render(request, 'vpn_invite/invite_settings.html', context=data)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def view_vpn_invite_settings(request):
|
|
|
|
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
|
|
|
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
|
|
|
invite_settings = InviteSettings.objects.get(name='default_settings')
|
|
|
|
|
|
|
|
form = InviteSettingsForm(request.POST or None, instance=invite_settings)
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
2025-04-16 10:18:23 -03:00
|
|
|
messages.success(request, _('Invite Settings|Settings saved successfully.'))
|
2025-02-27 22:41:20 -03:00
|
|
|
return redirect('/vpn_invite/')
|
|
|
|
data = {
|
|
|
|
'invite_settings': invite_settings,
|
2025-04-16 10:18:23 -03:00
|
|
|
'page_title': _('VPN Invite Settings'),
|
2025-02-27 22:41:20 -03:00
|
|
|
'form': form,
|
|
|
|
'form_size': 'col-lg-12'
|
|
|
|
}
|
|
|
|
return render(request, 'generic_form.html', context=data)
|
2025-02-27 23:26:44 -03:00
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def view_email_settings(request):
|
|
|
|
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
|
|
|
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
2025-04-16 10:18:23 -03:00
|
|
|
email_settings, email_settings_created = EmailSettings.objects.get_or_create(name='email_settings')
|
2025-02-27 23:26:44 -03:00
|
|
|
|
|
|
|
form = EmailSettingsForm(request.POST or None, instance=email_settings)
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
2025-04-16 10:18:23 -03:00
|
|
|
messages.success(request, _('Email Settings|Settings saved successfully.'))
|
2025-02-27 23:26:44 -03:00
|
|
|
return redirect('/vpn_invite/')
|
|
|
|
data = {
|
|
|
|
'email_settings': email_settings,
|
2025-04-16 10:18:23 -03:00
|
|
|
'page_title': _('Email Settings'),
|
2025-02-27 23:26:44 -03:00
|
|
|
'form': form,
|
|
|
|
'form_size': 'col-lg-12'
|
|
|
|
}
|
|
|
|
return render(request, 'generic_form.html', context=data)
|