mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-04-19 00:45:16 +00:00
Add API endpoint for instance information and include instance information at api peer list
This commit is contained in:
parent
0635ffd00b
commit
5886437bbe
50
api/views.py
50
api/views.py
@ -143,10 +143,15 @@ def api_peer_list(request):
|
|||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
else:
|
else:
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
data = {
|
data = {}
|
||||||
'peers': []
|
|
||||||
}
|
requested_instance = request.GET.get('instance', 'all')
|
||||||
for peer in Peer.objects.all():
|
if requested_instance == 'all':
|
||||||
|
peer_list = Peer.objects.all()
|
||||||
|
else:
|
||||||
|
peer_list = Peer.objects.filter(wireguard_instance__instance_id=requested_instance.replace('wg', ''))
|
||||||
|
|
||||||
|
for peer in peer_list:
|
||||||
peer_allowed_ips = []
|
peer_allowed_ips = []
|
||||||
for allowed_ip in peer.peerallowedip_set.all().filter(config_file='server'):
|
for allowed_ip in peer.peerallowedip_set.all().filter(config_file='server'):
|
||||||
peer_allowed_ips.append(
|
peer_allowed_ips.append(
|
||||||
@ -156,7 +161,9 @@ def api_peer_list(request):
|
|||||||
'netmask': allowed_ip.netmask
|
'netmask': allowed_ip.netmask
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
data['peers'].append({
|
if f'wg{peer.wireguard_instance.instance_id}' not in data:
|
||||||
|
data[f'wg{peer.wireguard_instance.instance_id}'] = {'peers': []}
|
||||||
|
data[f'wg{peer.wireguard_instance.instance_id}']['peers'].append({
|
||||||
'name': str(peer),
|
'name': str(peer),
|
||||||
'public_key': str(peer.public_key),
|
'public_key': str(peer.public_key),
|
||||||
'uuid': str(peer.uuid),
|
'uuid': str(peer.uuid),
|
||||||
@ -167,6 +174,39 @@ def api_peer_list(request):
|
|||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
|
||||||
|
|
||||||
|
@require_http_methods(["GET"])
|
||||||
|
def api_instance_info(request):
|
||||||
|
if request.GET.get('key'):
|
||||||
|
api_key = get_api_key('api')
|
||||||
|
if api_key and api_key == request.GET.get('key'):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
else:
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
data = {}
|
||||||
|
requested_instance = request.GET.get('instance', 'all')
|
||||||
|
if requested_instance == 'all':
|
||||||
|
instances = WireGuardInstance.objects.all()
|
||||||
|
else:
|
||||||
|
instances = WireGuardInstance.objects.filter(instance_id=requested_instance.replace('wg', ''))
|
||||||
|
|
||||||
|
for instance in instances:
|
||||||
|
data[f'wg{instance.instance_id}'] = {
|
||||||
|
'name': instance.name,
|
||||||
|
'instance_id': f'wg{instance.instance_id}',
|
||||||
|
'public_key': instance.public_key,
|
||||||
|
'listen_port': instance.listen_port,
|
||||||
|
'hostname': instance.hostname,
|
||||||
|
'address': instance.address,
|
||||||
|
'netmask': instance.netmask,
|
||||||
|
'peer_list_refresh_interval': instance.peer_list_refresh_interval,
|
||||||
|
'dns_primary': instance.dns_primary if instance.dns_primary else '',
|
||||||
|
'dns_secondary': instance.dns_secondary if instance.dns_secondary else '',
|
||||||
|
'uuid': str(instance.uuid),
|
||||||
|
}
|
||||||
|
return JsonResponse(data)
|
||||||
|
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
def wireguard_status(request):
|
def wireguard_status(request):
|
||||||
user_acl = None
|
user_acl = None
|
||||||
|
@ -14,12 +14,12 @@ Including another URLconf
|
|||||||
1. Import the include() function: from django.urls import include, path
|
1. Import the include() function: from django.urls import include, path
|
||||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from accounts.views import view_create_first_user, view_login, view_logout
|
from accounts.views import view_create_first_user, view_login, view_logout
|
||||||
from api.views import api_peer_invite, api_peer_list, cron_check_updates, cron_update_peer_latest_handshake, peer_info, \
|
from api.views import api_instance_info, api_peer_invite, api_peer_list, cron_check_updates, \
|
||||||
routerfleet_authenticate_session, routerfleet_get_user_token, wireguard_status
|
cron_update_peer_latest_handshake, peer_info, routerfleet_authenticate_session, routerfleet_get_user_token, \
|
||||||
|
wireguard_status
|
||||||
from console.views import view_console
|
from console.views import view_console
|
||||||
from dns.views import view_apply_dns_config, view_manage_dns_settings, view_manage_filter_list, view_manage_static_host, \
|
from dns.views import view_apply_dns_config, view_manage_dns_settings, view_manage_filter_list, view_manage_static_host, \
|
||||||
view_static_host_list, view_toggle_dns_list, view_update_dns_list
|
view_static_host_list, view_toggle_dns_list, view_update_dns_list
|
||||||
@ -36,7 +36,7 @@ from wireguard_peer.views import view_manage_ip_address, view_wireguard_peer_lis
|
|||||||
from wireguard_tools.views import download_config_or_qrcode, export_wireguard_configs, restart_wireguard_interfaces
|
from wireguard_tools.views import download_config_or_qrcode, export_wireguard_configs, restart_wireguard_interfaces
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
# path('admin/', admin.site.urls),
|
||||||
path('', view_apply_db_patches, name='apply_db_patches'),
|
path('', view_apply_db_patches, name='apply_db_patches'),
|
||||||
path('status/', view_wireguard_status, name='wireguard_status'),
|
path('status/', view_wireguard_status, name='wireguard_status'),
|
||||||
path('dns/', view_static_host_list, name='static_host_list'),
|
path('dns/', view_static_host_list, name='static_host_list'),
|
||||||
@ -67,6 +67,7 @@ urlpatterns = [
|
|||||||
path('api/routerfleet_get_user_token/', routerfleet_get_user_token, name='routerfleet_get_user_token'),
|
path('api/routerfleet_get_user_token/', routerfleet_get_user_token, name='routerfleet_get_user_token'),
|
||||||
path('api/wireguard_status/', wireguard_status, name='api_wireguard_status'),
|
path('api/wireguard_status/', wireguard_status, name='api_wireguard_status'),
|
||||||
path('api/peer_list/', api_peer_list, name='api_peer_list'),
|
path('api/peer_list/', api_peer_list, name='api_peer_list'),
|
||||||
|
path('api/instance_info/', api_instance_info, name='api_instance_info'),
|
||||||
path('api/peer_info/', peer_info, name='api_peer_info'),
|
path('api/peer_info/', peer_info, name='api_peer_info'),
|
||||||
path('api/peer_invite/', api_peer_invite, name='api_peer_invite'),
|
path('api/peer_invite/', api_peer_invite, name='api_peer_invite'),
|
||||||
path('api/cron_check_updates/', cron_check_updates, name='cron_check_updates'),
|
path('api/cron_check_updates/', cron_check_updates, name='cron_check_updates'),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user