mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-06-28 01:07:03 +00:00
New status page
This commit is contained in:
parent
da0fc7ed3c
commit
8c780d297c
@ -55,9 +55,6 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
|
||||
</li>
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="/" class="nav-link">Home</a>
|
||||
</li>
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="/status/" class="nav-link">Status</a>
|
||||
</li>
|
||||
@ -87,14 +84,6 @@
|
||||
<nav class="mt-2">
|
||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
|
||||
<!-- Add icons to the links using the .nav-icon class with font-awesome or any other icon font library -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link {% if '/' == request.path %}active{% endif %}">
|
||||
<i class="fas fa-home nav-icon"></i>
|
||||
<p>
|
||||
Home
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/status/" class="nav-link {% if '/status/' in request.path %}active{% endif %}">
|
||||
|
@ -6,25 +6,45 @@
|
||||
<div class='col-lg-12'>
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-header">
|
||||
<a href='/status/' class='btn btn-outline-primary'>wg show</a>
|
||||
<a href='/tools/export_wireguard_config/' class='btn btn-outline-primary'>Update Configuration</a>
|
||||
<a href='/tools/restart_wireguard/' class='btn btn-outline-primary'>Restart Wireguard service</a>
|
||||
|
||||
<div class="btn-group float-right" role="group" aria-label="Graph interval">
|
||||
<a href="?period=6h" data-period="6h" class="btn btn-outline-primary">6h</a>
|
||||
<a href="?period=7d" data-period="7d" class="btn btn-outline-primary">7d</a>
|
||||
<a href="?period=30d" data-period="30d" class="btn btn-outline-primary">1m</a>
|
||||
<a href="?period=180d" data-period="180d" class="btn btn-outline-primary">6m</a>
|
||||
<a href="?period=365d" data-period="365d" class="btn btn-outline-primary">1y</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class='row'>
|
||||
<div class='col-md-12'>
|
||||
<pre>{{command_output}}</pre>
|
||||
|
||||
<div class="row" style="padding-bottom: 20px">
|
||||
{% for wireguard_instance in wireguard_instances %}
|
||||
<div class="col-md-12">
|
||||
<h3>wg{{ wireguard_instance.instance_id }} {% if wireguard_instance.name %}({{ wireguard_instance.name }}){% endif %}</h3>
|
||||
<p><b><i class="fas fa-chart-area nav-icon"></i> Instance Traffic</b></p>
|
||||
<img id="graphImg" src="/rrd/graph/?instance={{ wireguard_instance.uuid }}{% if request.GET.period %}&period={{ request.GET.period }}{% endif %}" class="img-fluid" alt="No traffic history, please wait a few minutes" onerror="this.onerror=null; this.style.display='none'; this.insertAdjacentHTML('afterend', this.alt);">
|
||||
<p>
|
||||
<b><i class="fas fa-network-wired nav-icon"></i> IP Address: </b>{{ wireguard_instance.address }}/{{ wireguard_instance.netmask }}<br>
|
||||
<b><i class="fas fa-link nav-icon"></i> Public Address: </b>{{ wireguard_instance.hostname }}<br>
|
||||
<b><i class="fas fa-door-open nav-icon"></i> Port: </b>{{ wireguard_instance.listen_port }}<br>
|
||||
<b><i class="fas fa-users-cog nav-icon"></i> Peers: </b>{{ wireguard_instance.peer_set.count }}<br>
|
||||
</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p style="text-align: right" class="small">
|
||||
This is just a placeholder for the WireGuard status page. It will be updated with more information in the near future.
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
@ -70,14 +70,7 @@ def generate_instance_defaults():
|
||||
|
||||
|
||||
@login_required
|
||||
def view_welcome(request):
|
||||
#page_title = 'Welcome'
|
||||
#context = {'page_title': page_title}
|
||||
return render(request, 'wireguard/welcome.html')
|
||||
|
||||
|
||||
@login_required
|
||||
def view_wireguard_status(request):
|
||||
def legacy_view_wireguard_status(request):
|
||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||
page_title = 'WireGuard Status'
|
||||
wireguard_instances = WireGuardInstance.objects.all().order_by('instance_id')
|
||||
@ -102,6 +95,32 @@ def view_wireguard_status(request):
|
||||
return render(request, 'wireguard/wireguard_status.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
def view_wireguard_status(request):
|
||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||
page_title = 'WireGuard Status'
|
||||
|
||||
if user_acl.peer_groups.exists():
|
||||
wireguard_instances = []
|
||||
for peer_group in user_acl.peer_groups.all():
|
||||
for instance_temp in peer_group.server_instance.all():
|
||||
if instance_temp not in wireguard_instances:
|
||||
wireguard_instances.append(instance_temp)
|
||||
else:
|
||||
wireguard_instances = WireGuardInstance.objects.all().order_by('instance_id')
|
||||
|
||||
if WireGuardInstance.objects.filter(pending_changes=True).exists():
|
||||
pending_changes_warning = True
|
||||
else:
|
||||
pending_changes_warning = False
|
||||
|
||||
if user_acl.enable_enhanced_filter:
|
||||
pass
|
||||
|
||||
context = {'page_title': page_title, 'pending_changes_warning': pending_changes_warning, 'wireguard_instances': wireguard_instances}
|
||||
return render(request, 'wireguard/wireguard_status.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
def view_wireguard_manage_instance(request):
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||
|
@ -134,6 +134,6 @@ STATICFILES_DIRS = [
|
||||
DNS_CONFIG_FILE = '/etc/dnsmasq/wireguard_webadmin_dns.conf'
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
|
||||
WIREGUARD_WEBADMIN_VERSION = 9901
|
||||
WIREGUARD_WEBADMIN_VERSION = 9951
|
||||
|
||||
from wireguard_webadmin.production_settings import *
|
||||
|
@ -16,7 +16,9 @@ Including another URLconf
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
from wireguard.views import view_welcome, view_wireguard_status, view_wireguard_manage_instance
|
||||
from django.views.generic import RedirectView
|
||||
|
||||
from wireguard.views import view_wireguard_status, view_wireguard_manage_instance
|
||||
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
|
||||
@ -28,8 +30,8 @@ from dns.views import view_static_host_list, view_manage_static_host, view_manag
|
||||
from wgrrd.views import view_rrd_graph
|
||||
|
||||
urlpatterns = [
|
||||
# path('admin/', admin.site.urls),
|
||||
path('', view_welcome, name='welcome'),
|
||||
path('admin/', admin.site.urls),
|
||||
path('', RedirectView.as_view(url='/status/', permanent=False), name='redirect_to_status'),
|
||||
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'),
|
||||
|
Loading…
x
Reference in New Issue
Block a user