diff --git a/init.sh b/init.sh index 159b89f..a41e56f 100644 --- a/init.sh +++ b/init.sh @@ -4,6 +4,13 @@ set -e # Lets wait for the DNS container to start sleep 5 +# Django startup +python manage.py migrate --noinput +python manage.py collectstatic --noinput + +# Export WireGuard, firewall and Caddy configs before bringing up interfaces +python manage.py export_configs + # Starts each WireGuard configuration file found in /etc/wireguard shopt -s nullglob config_files=(/etc/wireguard/*.conf) @@ -12,15 +19,6 @@ if [ ${#config_files[@]} -gt 0 ]; then wg-quick up "$(basename "${f}" .conf)" done fi - -# Django startup -python manage.py migrate --noinput -python manage.py collectstatic --noinput - -if [[ "${CADDY_ENABLED,,}" == "true" ]]; then - echo "Exporting Caddy configuration (auth_policies.json, applications.json, routes.json)..." - python manage.py shell -c "from app_gateway.caddy_config_export import export_caddy_config; export_caddy_config('/caddy_json_export')" || echo "Failed to export Caddy configuration." -fi if [[ "${DEV_MODE,,}" == "true" ]]; then echo "" echo "" diff --git a/wireguard_tools/management/__init__.py b/wireguard_tools/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/wireguard_tools/management/commands/__init__.py b/wireguard_tools/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/wireguard_tools/management/commands/export_configs.py b/wireguard_tools/management/commands/export_configs.py new file mode 100644 index 0000000..4fe03b5 --- /dev/null +++ b/wireguard_tools/management/commands/export_configs.py @@ -0,0 +1,32 @@ +import os + +from django.conf import settings +from django.core.management.base import BaseCommand + +from wireguard_tools.views import export_firewall_configuration, export_wireguard_configuration + + +class Command(BaseCommand): + help = 'Export WireGuard, firewall and Caddy configuration files' + + def handle(self, *args, **options): + self.stdout.write('Exporting WireGuard configuration...') + export_wireguard_configuration() + self.stdout.write(self.style.SUCCESS('WireGuard configuration exported.')) + + self.stdout.write('Exporting firewall configuration...') + export_firewall_configuration() + self.stdout.write(self.style.SUCCESS('Firewall configuration exported.')) + + if settings.CADDY_ENABLED: + self.stdout.write('Exporting Caddy configuration...') + try: + from app_gateway.caddy_config_export import export_caddy_config + export_caddy_config('/caddy_json_export/') + if settings.DEBUG: + export_caddy_config(os.path.join(settings.BASE_DIR, 'containers', 'caddy', 'config_files')) + self.stdout.write(self.style.SUCCESS('Caddy configuration exported.')) + except Exception as e: + self.stdout.write(self.style.WARNING(f'Failed to export Caddy configuration: {e}')) + else: + self.stdout.write('Skipping Caddy configuration export (CADDY_ENABLED is not set).')