mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-01-01 22:26:17 +00:00
add API endpoint to retrieve dnsmasq configuration for workers
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import glob
|
||||
import os
|
||||
|
||||
from django.http import JsonResponse
|
||||
from django.http import JsonResponse, FileResponse
|
||||
from django.utils import timezone
|
||||
|
||||
from .models import ClusterSettings, Worker, WorkerStatus
|
||||
@@ -30,7 +30,7 @@ def get_worker(request):
|
||||
try:
|
||||
worker_config_version = int(request.GET.get('worker_config_version'))
|
||||
worker_version = int(request.GET.get('worker_version'))
|
||||
worker_dns_version = int(request.GET.get('dns_version'))
|
||||
worker_dns_version = int(request.GET.get('worker_dns_version'))
|
||||
except:
|
||||
worker.error_status = 'missing_version'
|
||||
worker.save()
|
||||
@@ -97,6 +97,27 @@ def get_worker(request):
|
||||
return worker, success
|
||||
|
||||
|
||||
def api_get_worker_dnsmasq_config(request):
|
||||
dnsmasq_file = "/etc/dnsmasq/dnsmasq_config.tar.gz"
|
||||
worker, success = get_worker(request)
|
||||
if worker:
|
||||
if worker.error_status or not success:
|
||||
data = {'status': 'error', 'message': worker.error_status}
|
||||
return JsonResponse(data, status=400)
|
||||
else:
|
||||
data = {'status': 'error', 'message': 'Worker not found'}
|
||||
return JsonResponse(data, status=403)
|
||||
|
||||
if not os.path.exists(dnsmasq_file):
|
||||
data = {'status': 'error', 'message': 'dnsmasq configuration not found'}
|
||||
return JsonResponse(data, status=404)
|
||||
|
||||
response = FileResponse(open(dnsmasq_file, "rb"), content_type="application/gzip")
|
||||
response["Content-Disposition"] = 'attachment; filename="dnsmasq_config.tar.gz"'
|
||||
response["Content-Length"] = str(os.path.getsize(dnsmasq_file))
|
||||
return response
|
||||
|
||||
|
||||
def api_get_worker_config_files(request):
|
||||
worker, success = get_worker(request)
|
||||
if worker:
|
||||
|
||||
@@ -21,7 +21,7 @@ from accounts.views import view_create_first_user, view_login, view_logout
|
||||
from api.views import api_instance_info, api_peer_invite, api_peer_list, cron_check_updates, \
|
||||
cron_update_peer_latest_handshake, peer_info, routerfleet_authenticate_session, routerfleet_get_user_token, \
|
||||
wireguard_status
|
||||
from cluster.cluster_api import api_cluster_status, api_get_worker_config_files
|
||||
from cluster.cluster_api import api_cluster_status, api_get_worker_config_files, api_get_worker_dnsmasq_config
|
||||
from cluster.views import cluster_main, cluster_settings, worker_manage
|
||||
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, \
|
||||
@@ -78,6 +78,7 @@ urlpatterns = [
|
||||
path('api/cron_update_peer_latest_handshake/', cron_update_peer_latest_handshake, name='cron_update_peer_latest_handshake'),
|
||||
path('api/cluster/status/', api_cluster_status, name='api_cluster_status'),
|
||||
path('api/cluster/worker/get_config_files/', api_get_worker_config_files, name='api_get_worker_config_files'),
|
||||
path('api/cluster/worker/get_dnsmasq_config/', api_get_worker_dnsmasq_config, name='api_get_worker_dnsmasq_config'),
|
||||
path('firewall/port_forward/', view_redirect_rule_list, name='redirect_rule_list'),
|
||||
path('firewall/manage_port_forward_rule/', manage_redirect_rule, name='manage_redirect_rule'),
|
||||
path('firewall/rule_list/', view_firewall_rule_list, name='firewall_rule_list'),
|
||||
|
||||
Reference in New Issue
Block a user