diff --git a/api_v2/__init__.py b/api_v2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_v2/admin.py b/api_v2/admin.py new file mode 100644 index 0000000..846f6b4 --- /dev/null +++ b/api_v2/admin.py @@ -0,0 +1 @@ +# Register your models here. diff --git a/api_v2/apps.py b/api_v2/apps.py new file mode 100644 index 0000000..ca7483a --- /dev/null +++ b/api_v2/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiV2Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api_v2' diff --git a/api_v2/migrations/0001_initial.py b/api_v2/migrations/0001_initial.py new file mode 100644 index 0000000..20f35a7 --- /dev/null +++ b/api_v2/migrations/0001_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.11 on 2026-02-09 23:31 + +import uuid + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wireguard', '0032_remove_peer_enabled_by_schedule'), + ] + + operations = [ + migrations.CreateModel( + name='ApiKey', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, unique=True)), + ('token', models.UUIDField(default=uuid.uuid4, unique=True)), + ('allow_restart', models.BooleanField(default=True)), + ('allow_reload', models.BooleanField(default=True)), + ('allow_export', models.BooleanField(default=True)), + ('enabled', models.BooleanField(default=True)), + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('allowed_instances', models.ManyToManyField(blank=True, related_name='api_keys', to='wireguard.wireguardinstance')), + ], + ), + ] diff --git a/api_v2/migrations/__init__.py b/api_v2/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_v2/models.py b/api_v2/models.py new file mode 100644 index 0000000..b32b107 --- /dev/null +++ b/api_v2/models.py @@ -0,0 +1,21 @@ +import uuid + +from django.db import models + +from wireguard.models import WireGuardInstance + + +class ApiKey(models.Model): + name = models.CharField(max_length=64, unique=True) + token = models.UUIDField(default=uuid.uuid4, unique=True) + allowed_instances = models.ManyToManyField(WireGuardInstance, blank=True, related_name='api_keys') + allow_restart = models.BooleanField(default=True) + allow_reload = models.BooleanField(default=True) + allow_export = models.BooleanField(default=True) + enabled = models.BooleanField(default=True) + + uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + def __str__(self): + return self.name \ No newline at end of file diff --git a/api_v2/tests.py b/api_v2/tests.py new file mode 100644 index 0000000..a39b155 --- /dev/null +++ b/api_v2/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/api_v2/views.py b/api_v2/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/api_v2/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/wireguard_webadmin/settings.py b/wireguard_webadmin/settings.py index 1f3983d..6cd04a1 100644 --- a/wireguard_webadmin/settings.py +++ b/wireguard_webadmin/settings.py @@ -49,7 +49,8 @@ INSTALLED_APPS = [ 'cluster', 'api', 'routing_templates', - 'scheduler.apps.SchedulerConfig' + 'scheduler.apps.SchedulerConfig', + 'api_v2' ] MIDDLEWARE = [