diff --git a/accounts/urls.py b/accounts/urls.py new file mode 100644 index 0000000..9cb2329 --- /dev/null +++ b/accounts/urls.py @@ -0,0 +1,11 @@ +from django.urls import path + +from accounts.views import view_create_first_user, view_login, view_logout +from api.views import routerfleet_authenticate_session + +urlpatterns = [ + path('create_first_user/', view_create_first_user, name='create_first_user'), + path('login/', view_login, name='login'), + path('logout/', view_logout, name='logout'), + path('routerfleet_authenticate_session/', routerfleet_authenticate_session, name='routerfleet_authenticate_session'), +] \ No newline at end of file diff --git a/api/urls.py b/api/urls.py new file mode 100644 index 0000000..9fd1e98 --- /dev/null +++ b/api/urls.py @@ -0,0 +1,20 @@ +from django.urls import path, include + +from api.views import api_instance_info, api_peer_invite, api_peer_list, cron_check_updates, \ + cron_update_peer_latest_handshake, peer_info, routerfleet_get_user_token, \ + wireguard_status, cron_refresh_wireguard_status_cache, cron_calculate_peer_schedules, cron_peer_scheduler + +urlpatterns = [ + path('cluster/', include('cluster.urls_api')), + path('routerfleet_get_user_token/', routerfleet_get_user_token, name='routerfleet_get_user_token'), + path('wireguard_status/', wireguard_status, name='api_wireguard_status'), + path('peer_list/', api_peer_list, name='api_peer_list'), + path('instance_info/', api_instance_info, name='api_instance_info'), + path('peer_info/', peer_info, name='api_peer_info'), + path('peer_invite/', api_peer_invite, name='api_peer_invite'), + path('cron/peer_scheduler/', cron_peer_scheduler, name='cron_peer_scheduler'), + path('cron/calculate_peer_schedules/', cron_calculate_peer_schedules, name='cron_calculate_peer_schedules'), + path('cron/refresh_wireguard_status_cache/', cron_refresh_wireguard_status_cache, name='cron_refresh_wireguard_status_cache'), + path('cron/check_updates/', cron_check_updates, name='cron_check_updates'), + path('cron/update_peer_latest_handshake/', cron_update_peer_latest_handshake, name='cron_update_peer_latest_handshake'), +] \ No newline at end of file diff --git a/api_v2/urls_api.py b/api_v2/urls_api.py new file mode 100644 index 0000000..66b1c19 --- /dev/null +++ b/api_v2/urls_api.py @@ -0,0 +1,3 @@ +urlpatterns = [ + +] \ No newline at end of file diff --git a/api_v2/urls_manage.py b/api_v2/urls_manage.py new file mode 100644 index 0000000..31f6a80 --- /dev/null +++ b/api_v2/urls_manage.py @@ -0,0 +1,9 @@ +from django.urls import path + +from api_v2.views import view_api_key_list, view_manage_api_key, view_delete_api_key + +urlpatterns = [ + path('list/', view_api_key_list, name='api_v2_list'), + path('manage/', view_manage_api_key, name='api_v2_manage'), + path('delete//', view_delete_api_key, name='api_v2_delete'), +] \ No newline at end of file diff --git a/cluster/urls_api.py b/cluster/urls_api.py new file mode 100644 index 0000000..2f0e1f5 --- /dev/null +++ b/cluster/urls_api.py @@ -0,0 +1,12 @@ +from django.urls import path + +from cluster.cluster_api import api_cluster_status, api_get_worker_config_files, api_get_worker_dnsmasq_config, \ + api_worker_ping, api_submit_worker_wireguard_stats + +urlpatterns = [ + path('status/', api_cluster_status, name='api_cluster_status'), + path('worker/get_config_files/', api_get_worker_config_files, name='api_get_worker_config_files'), + path('worker/get_dnsmasq_config/', api_get_worker_dnsmasq_config, name='api_get_worker_dnsmasq_config'), + path('worker/ping/', api_worker_ping, name='api_worker_ping'), + path('worker/submit_wireguard_stats/', api_submit_worker_wireguard_stats, name='api_submit_worker_wireguard_stats'), +] diff --git a/cluster/urls_manage.py b/cluster/urls_manage.py new file mode 100644 index 0000000..dbf7511 --- /dev/null +++ b/cluster/urls_manage.py @@ -0,0 +1,9 @@ +from django.urls import path + +from cluster.views import cluster_main, cluster_settings, worker_manage + +urlpatterns = [ + path('', cluster_main, name='cluster_main'), + path('worker/manage/', worker_manage, name='worker_manage'), + path('settings/', cluster_settings, name='cluster_settings'), +] diff --git a/console/urls.py b/console/urls.py new file mode 100644 index 0000000..939791a --- /dev/null +++ b/console/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from console.views import view_console + +urlpatterns = [ + path('', view_console, name='console'), +] diff --git a/dns/urls.py b/dns/urls.py new file mode 100644 index 0000000..4e14008 --- /dev/null +++ b/dns/urls.py @@ -0,0 +1,14 @@ +from django.urls import path + +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 + +urlpatterns = [ + path('', view_static_host_list, name='static_host_list'), + path('apply_config/', view_apply_dns_config, name='apply_dns_config'), + path('manage_static_host/', view_manage_static_host, name='manage_static_host'), + path('manage_settings/', view_manage_dns_settings, name='manage_dns_settings'), + path('manage_filter_list/', view_manage_filter_list, name='manage_filter_list'), + path('update_dns_list/', view_update_dns_list, name='update_dns_list'), + path('toggle_dns_list/', view_toggle_dns_list, name='toggle_dns_list'), +] diff --git a/firewall/urls.py b/firewall/urls.py new file mode 100644 index 0000000..2b0a938 --- /dev/null +++ b/firewall/urls.py @@ -0,0 +1,16 @@ +from django.urls import path + +from firewall.views import manage_firewall_rule, manage_redirect_rule, view_firewall_migration_required, \ + view_firewall_rule_list, view_generate_iptables_script, view_manage_firewall_settings, view_redirect_rule_list, \ + view_reset_firewall + +urlpatterns = [ + path('port_forward/', view_redirect_rule_list, name='redirect_rule_list'), + path('manage_port_forward_rule/', manage_redirect_rule, name='manage_redirect_rule'), + path('rule_list/', view_firewall_rule_list, name='firewall_rule_list'), + path('manage_firewall_rule/', manage_firewall_rule, name='manage_firewall_rule'), + path('firewall_settings/', view_manage_firewall_settings, name='firewall_settings'), + path('generate_firewall_script/', view_generate_iptables_script, name='generate_iptables_script'), + path('reset_to_default/', view_reset_firewall, name='reset_firewall'), + path('migration_required/', view_firewall_migration_required, name='firewall_migration_required'), +] diff --git a/intl_tools/urls.py b/intl_tools/urls.py new file mode 100644 index 0000000..85cf891 --- /dev/null +++ b/intl_tools/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from intl_tools.views import view_change_language + +urlpatterns = [ + path('', view_change_language, name='change_language'), +] diff --git a/routing_templates/urls.py b/routing_templates/urls.py new file mode 100644 index 0000000..baa6375 --- /dev/null +++ b/routing_templates/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from routing_templates.views import view_manage_routing_template, view_routing_template_list + +urlpatterns = [ + path('list/', view_routing_template_list, name='routing_template_list'), + path('manage/', view_manage_routing_template, name='manage_routing_template'), +] diff --git a/scheduler/urls.py b/scheduler/urls.py new file mode 100644 index 0000000..8a2cc79 --- /dev/null +++ b/scheduler/urls.py @@ -0,0 +1,12 @@ +from django.urls import path + +from scheduler.views import view_scheduler_profile_list, view_manage_scheduler_profile, view_delete_scheduler_profile, \ + view_manage_scheduler_slot, view_delete_scheduler_slot + +urlpatterns = [ + path('profile/list/', view_scheduler_profile_list, name='scheduler_profile_list'), + path('profile/manage/', view_manage_scheduler_profile, name='manage_scheduler_profile'), + path('profile/delete/', view_delete_scheduler_profile, name='delete_scheduler_profile'), + path('slot/manage/', view_manage_scheduler_slot, name='manage_scheduler_slot'), + path('slot/delete/', view_delete_scheduler_slot, name='delete_scheduler_slot'), +] diff --git a/user_manager/urls.py b/user_manager/urls.py new file mode 100644 index 0000000..d1a0867 --- /dev/null +++ b/user_manager/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from user_manager.views import view_manage_user, view_peer_group_list, view_peer_group_manage, view_user_list + +urlpatterns = [ + path('list/', view_user_list, name='user_list'), + path('manage/', view_manage_user, name='manage_user'), + path('peer-group/list/', view_peer_group_list, name='peer_group_list'), + path('peer-group/manage/', view_peer_group_manage, name='peer_group_manage'), +] diff --git a/vpn_invite/urls.py b/vpn_invite/urls.py new file mode 100644 index 0000000..3ca395c --- /dev/null +++ b/vpn_invite/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from vpn_invite.views import view_email_settings, view_vpn_invite_list, view_vpn_invite_settings + +urlpatterns = [ + path('', view_vpn_invite_list, name='vpn_invite_list'), + path('settings/', view_vpn_invite_settings, name='vpn_invite_settings'), + path('smtp_settings/', view_email_settings, name='email_settings'), +] diff --git a/vpn_invite_public/urls.py b/vpn_invite_public/urls.py new file mode 100644 index 0000000..f1c6a2b --- /dev/null +++ b/vpn_invite_public/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from vpn_invite_public.views import view_public_vpn_invite +from wireguard_tools.views import download_config_or_qrcode + +urlpatterns = [ + path('', view_public_vpn_invite, name='public_vpn_invite'), + path('download_config/', download_config_or_qrcode, name='download_config_or_qrcode'), +] diff --git a/wgrrd/urls.py b/wgrrd/urls.py new file mode 100644 index 0000000..83afa34 --- /dev/null +++ b/wgrrd/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from wgrrd.views import view_rrd_graph + +urlpatterns = [ + path('graph/', view_rrd_graph, name='rrd_graph'), +] diff --git a/wireguard/urls.py b/wireguard/urls.py new file mode 100644 index 0000000..94dbc15 --- /dev/null +++ b/wireguard/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from wireguard.views import view_wireguard_manage_instance, view_server_list, view_server_detail + +urlpatterns = [ + path('manage/', view_wireguard_manage_instance, name='wireguard_manage_instance'), + path('list/', view_server_list, name='wireguard_server_list'), + path('detail/', view_server_detail, name='wireguard_server_detail'), +] diff --git a/wireguard/urls_root.py b/wireguard/urls_root.py new file mode 100644 index 0000000..24fdaf9 --- /dev/null +++ b/wireguard/urls_root.py @@ -0,0 +1,8 @@ +from django.urls import path + +from wireguard.views import view_apply_db_patches, view_wireguard_status + +urlpatterns = [ + path('', view_apply_db_patches, name='apply_db_patches'), + path('status/', view_wireguard_status, name='wireguard_status'), +] diff --git a/wireguard_peer/urls.py b/wireguard_peer/urls.py new file mode 100644 index 0000000..382dc26 --- /dev/null +++ b/wireguard_peer/urls.py @@ -0,0 +1,17 @@ +from django.urls import path + +from wireguard_peer.views import view_manage_ip_address, view_wireguard_peer_list, view_wireguard_peer_manage, \ + view_wireguard_peer_sort, view_apply_route_template, view_wireguard_peer_create, view_wireguard_peer_edit_field, \ + view_wireguard_peer_suspend, view_wireguard_peer_schedule_profile + +urlpatterns = [ + path('list/', view_wireguard_peer_list, name='wireguard_peer_list'), + path('sort/', view_wireguard_peer_sort, name='wireguard_peer_sort'), + path('manage/', view_wireguard_peer_manage, name='wireguard_peer_manage'), + path('create/', view_wireguard_peer_create, name='wireguard_peer_create'), + path('edit/', view_wireguard_peer_edit_field, name='wireguard_peer_edit_field'), + path('suspend/', view_wireguard_peer_suspend, name='wireguard_peer_suspend'), + path('schedule_profile/', view_wireguard_peer_schedule_profile, name='wireguard_peer_schedule_profile'), + path('apply_route_template/', view_apply_route_template, name='apply_route_template'), + path('manage_ip_address/', view_manage_ip_address, name='manage_ip_address'), +] diff --git a/wireguard_tools/urls.py b/wireguard_tools/urls.py new file mode 100644 index 0000000..523116d --- /dev/null +++ b/wireguard_tools/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from wireguard_tools.views import download_config_or_qrcode, view_export_wireguard_configs, restart_wireguard_interfaces + +urlpatterns = [ + path('export_wireguard_config/', view_export_wireguard_configs, name='export_wireguard_configs'), + path('download_peer_config/', download_config_or_qrcode, name='download_config_or_qrcode'), + path('restart_wireguard/', restart_wireguard_interfaces, name='restart_wireguard_interfaces'), +] diff --git a/wireguard_webadmin/urls.py b/wireguard_webadmin/urls.py index 0c3c8d2..38cd721 100644 --- a/wireguard_webadmin/urls.py +++ b/wireguard_webadmin/urls.py @@ -1,128 +1,36 @@ -""" -URL configuration for wireguard_webadmin project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" from django.contrib import admin -from django.urls import path - -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, cron_refresh_wireguard_status_cache, cron_calculate_peer_schedules, cron_peer_scheduler -from api_v2.views import view_api_key_list, view_manage_api_key, view_delete_api_key -from cluster.cluster_api import api_cluster_status, api_get_worker_config_files, api_get_worker_dnsmasq_config, \ - api_worker_ping, api_submit_worker_wireguard_stats -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, \ - view_static_host_list, view_toggle_dns_list, view_update_dns_list -from firewall.views import manage_firewall_rule, manage_redirect_rule, view_firewall_migration_required, \ - view_firewall_rule_list, view_generate_iptables_script, view_manage_firewall_settings, view_redirect_rule_list, \ - view_reset_firewall -from intl_tools.views import view_change_language -from routing_templates.views import view_manage_routing_template, view_routing_template_list -from scheduler.views import view_scheduler_profile_list, view_manage_scheduler_profile, view_delete_scheduler_profile, \ - view_manage_scheduler_slot, view_delete_scheduler_slot -from user_manager.views import view_manage_user, view_peer_group_list, view_peer_group_manage, view_user_list -from vpn_invite.views import view_email_settings, view_vpn_invite_list, view_vpn_invite_settings -from vpn_invite_public.views import view_public_vpn_invite -from wgrrd.views import view_rrd_graph -from wireguard.views import view_apply_db_patches, view_wireguard_manage_instance, view_wireguard_status, \ - view_server_list, view_server_detail -from wireguard_peer.views import view_manage_ip_address, view_wireguard_peer_list, view_wireguard_peer_manage, \ - view_wireguard_peer_sort, view_apply_route_template, view_wireguard_peer_create, view_wireguard_peer_edit_field, \ - view_wireguard_peer_suspend, view_wireguard_peer_schedule_profile -from wireguard_tools.views import download_config_or_qrcode, view_export_wireguard_configs, restart_wireguard_interfaces +from django.urls import path, include urlpatterns = [ + # Admin path('admin/', admin.site.urls), - path('manage_api/v2/list/', view_api_key_list, name='api_v2_list'), - path('manage_api/v2/manage/', view_manage_api_key, name='api_v2_manage'), - path('manage_api/v2/delete//', view_delete_api_key, name='api_v2_delete'), - 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'), - path('dns/manage_static_host/', view_manage_static_host, name='manage_static_host'), - path('dns/manage_settings/', view_manage_dns_settings, name='manage_dns_settings'), - path('dns/manage_filter_list/', view_manage_filter_list, name='manage_filter_list'), - path('dns/update_dns_list/', view_update_dns_list, name='update_dns_list'), - path('dns/toggle_dns_list/', view_toggle_dns_list, name='toggle_dns_list'), - path('peer/list/', view_wireguard_peer_list, name='wireguard_peer_list'), - path('peer/sort/', view_wireguard_peer_sort, name='wireguard_peer_sort'), - path('peer/manage/', view_wireguard_peer_manage, name='wireguard_peer_manage'), - path('peer/create/', view_wireguard_peer_create, name='wireguard_peer_create'), - path('peer/edit/', view_wireguard_peer_edit_field, name='wireguard_peer_edit_field'), - path('peer/suspend/', view_wireguard_peer_suspend, name='wireguard_peer_suspend'), - path('peer/schedule_profile/', view_wireguard_peer_schedule_profile, name='wireguard_peer_schedule_profile'), - path('peer/apply_route_template/', view_apply_route_template, name='apply_route_template'), - path('peer/manage_ip_address/', view_manage_ip_address, name='manage_ip_address'), - path('rrd/graph/', view_rrd_graph, name='rrd_graph'), - path('console/', view_console, name='console'), - path('user/list/', view_user_list, name='user_list'), - path('user/manage/', view_manage_user, name='manage_user'), - path('user/peer-group/list/', view_peer_group_list, name='peer_group_list'), - path('user/peer-group/manage/', view_peer_group_manage, name='peer_group_manage'), - path('tools/export_wireguard_config/', view_export_wireguard_configs, name='export_wireguard_configs'), - path('tools/download_peer_config/', download_config_or_qrcode, name='download_config_or_qrcode'), - path('tools/restart_wireguard/', restart_wireguard_interfaces, name='restart_wireguard_interfaces'), - path('server/manage/', view_wireguard_manage_instance, name='wireguard_manage_instance'), - path('server/list/', view_server_list, name='wireguard_server_list'), - path('server/detail/', view_server_detail, name='wireguard_server_detail'), - path('accounts/create_first_user/', view_create_first_user, name='create_first_user'), - path('accounts/login/', view_login, name='login'), - path('accounts/logout/', view_logout, name='logout'), - path('accounts/routerfleet_authenticate_session/', routerfleet_authenticate_session, name='routerfleet_authenticate_session'), - 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/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_invite/', api_peer_invite, name='api_peer_invite'), - path('api/cron/peer_scheduler/', cron_peer_scheduler, name='cron_peer_scheduler'), - path('api/cron/calculate_peer_schedules/', cron_calculate_peer_schedules, name='cron_calculate_peer_schedules'), - path('api/cron/refresh_wireguard_status_cache/', cron_refresh_wireguard_status_cache, name='cron_refresh_wireguard_status_cache'), - path('api/cron/check_updates/', cron_check_updates, name='cron_check_updates'), - 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('api/cluster/worker/ping/', api_worker_ping, name='api_worker_ping'), - path('api/cluster/worker/submit_wireguard_stats/', api_submit_worker_wireguard_stats, name='api_submit_worker_wireguard_stats'), - 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'), - path('firewall/manage_firewall_rule/', manage_firewall_rule, name='manage_firewall_rule'), - path('firewall/firewall_settings/', view_manage_firewall_settings, name='firewall_settings'), - path('firewall/generate_firewall_script/', view_generate_iptables_script, name='generate_iptables_script'), - path('firewall/reset_to_default/', view_reset_firewall, name='reset_firewall'), - path('firewall/migration_required/', view_firewall_migration_required, name='firewall_migration_required'), - path('vpn_invite/', view_vpn_invite_list, name='vpn_invite_list'), - path('vpn_invite/settings/', view_vpn_invite_settings, name='vpn_invite_settings'), - path('vpn_invite/smtp_settings/', view_email_settings, name='email_settings'), - path('invite/', view_public_vpn_invite, name='public_vpn_invite'), - path('invite/download_config/', download_config_or_qrcode, name='download_config_or_qrcode'), - path('cluster/', cluster_main, name='cluster_main'), - path('cluster/worker/manage/', worker_manage, name='worker_manage'), - path('cluster/settings/', cluster_settings, name='cluster_settings'), - path('routing-templates/list/', view_routing_template_list, name='routing_template_list'), - path('routing-templates/manage/', view_manage_routing_template, name='manage_routing_template'), - path('scheduler/profile/list/', view_scheduler_profile_list, name='scheduler_profile_list'), - path('scheduler/profile/manage/', view_manage_scheduler_profile, name='manage_scheduler_profile'), - path('scheduler/profile/delete/', view_delete_scheduler_profile, name='delete_scheduler_profile'), - path('scheduler/slot/manage/', view_manage_scheduler_slot, name='manage_scheduler_slot'), - path('scheduler/slot/delete/', view_delete_scheduler_slot, name='delete_scheduler_slot'), - path('change_language/', view_change_language, name='change_language'), + + # Core / entrypoint + path('', include('wireguard.urls_root')), + + # Auth & users + path('accounts/', include('accounts.urls')), + path('user/', include('user_manager.urls')), + + # API + path('api/', include('api.urls')), + path('manage_api/v2/', include('api_v2.urls_manage')), + + # Main features + path('cluster/', include('cluster.urls_manage')), + path('dns/', include('dns.urls')), + path('firewall/', include('firewall.urls')), + path('peer/', include('wireguard_peer.urls')), + path('routing-templates/', include('routing_templates.urls')), + path('scheduler/', include('scheduler.urls')), + path('server/', include('wireguard.urls')), + path('tools/', include('wireguard_tools.urls')), + path('vpn_invite/', include('vpn_invite.urls')), + path('invite/', include('vpn_invite_public.urls')), + + # Utilities / misc + path('console/', include('console.urls')), + path('rrd/', include('wgrrd.urls')), + path('change_language/', include('intl_tools.urls')), ] +