diff --git a/templates/wireguard/welcome.html b/templates/wireguard/welcome.html index 50e076d..1805d21 100644 --- a/templates/wireguard/welcome.html +++ b/templates/wireguard/welcome.html @@ -2,17 +2,33 @@ {% block content %} -
WireGuard WebAdmin is a web-based interface designed for managing WireGuard VPN, a remarkably simple, fast, and modern VPN that employs cutting-edge cryptography.
-I have dedicated significant effort to this project over the past few weeks and am thrilled to announce that we are now close to version 1.0
+The following modifications have been applied to your database:
+| Patch | +Field | +Value | +Objects | +Reason | + + + + {% for update in update_list %} +
|---|---|---|---|---|
| {{ update.patch_version}} | +{{ update.field }} | +{{ update.new_value }} | +
+
|
+ {{ update.reason|safe }} | +
Stay tuned to our GitHub page for imminent updates to this project.
{% endblock %} diff --git a/wireguard/views.py b/wireguard/views.py index fe0aead..dc2dfaf 100644 --- a/wireguard/views.py +++ b/wireguard/views.py @@ -173,4 +173,43 @@ def view_wireguard_manage_instance(request): else: form = WireGuardInstanceForm(instance=current_instance) context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'form': form, 'pending_changes_warning': pending_changes_warning} - return render(request, 'wireguard/wireguard_manage_server.html', context) \ No newline at end of file + return render(request, 'wireguard/wireguard_manage_server.html', context) + + +@login_required +def view_apply_db_patches(request): + if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists(): + return redirect('/status/') + webadmin_settings, webadmin_settings_created = WebadminSettings.objects.get_or_create(name='webadmin_settings') + update_applied = False + update_list = [] + + if webadmin_settings.db_patch_version < 1: + print('Applying DB patch 1') + object_list = [] + for wg_instance in WireGuardInstance.objects.filter(peer_list_refresh_interval__gt=10): + object_list.append(f'wg{wg_instance.instance_id}') + wg_instance.peer_list_refresh_interval = 10 + wg_instance.save() + + if object_list: + update_applied = True + update_list.append({ + 'patch_version': 1, 'object_list': object_list, + 'field': 'peer_list_refresh_interval', 'new_value': '10', + 'reason': 'The interval has been reduced to improve the user experience on the peer list. This may impact server performance in larger environments. You can modify this interval in "Server Settings."' + }) + webadmin_settings.db_patch_version = 1 + webadmin_settings.save() + + data = { + 'update_applied': update_applied, + 'update_list': update_list, + } + if update_applied: + return render(request, 'wireguard/welcome.html', context=data) + else: + return redirect('/status/') + + + diff --git a/wireguard_webadmin/urls.py b/wireguard_webadmin/urls.py index be0aa4a..3010a68 100644 --- a/wireguard_webadmin/urls.py +++ b/wireguard_webadmin/urls.py @@ -18,7 +18,7 @@ from django.contrib import admin from django.urls import path from django.views.generic import RedirectView -from wireguard.views import view_wireguard_status, view_wireguard_manage_instance +from wireguard.views import view_wireguard_status, view_wireguard_manage_instance, view_apply_db_patches from wireguard_peer.views import view_wireguard_peer_list, view_wireguard_peer_manage, view_manage_ip_address, view_wireguard_peer_sort from console.views import view_console from user_manager.views import view_user_list, view_manage_user, view_peer_group_list, view_peer_group_manage @@ -31,7 +31,7 @@ from wgrrd.views import view_rrd_graph urlpatterns = [ path('admin/', admin.site.urls), - path('', RedirectView.as_view(url='/status/', permanent=False), name='redirect_to_status'), + path('', view_apply_db_patches, name='apply_db_patches'), path('status/', view_wireguard_status, name='wireguard_status'), path('dns/', view_static_host_list, name='static_host_list'), path('dns/apply_config/', view_apply_dns_config, name='apply_dns_config'),