From 6d56eb7eab3388e826f6acd5c440c6d7a9f06201 Mon Sep 17 00:00:00 2001 From: Ultradesu Date: Mon, 21 Jul 2025 04:18:27 +0300 Subject: [PATCH] Added indexes to logs --- docker-compose.yaml | 4 ++-- vpn/admin.py | 14 ++++++++------ vpn/models.py | 8 ++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index fcd2534..39031f3 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -19,8 +19,8 @@ services: redis: condition: service_healthy command: > - sh -c "sleep 3 && - python manage.py makemigrations vpn && + sh -c "sleep 1 && + python manage.py makemigrations && python manage.py migrate && python manage.py create_admin && python manage.py runserver 0.0.0.0:8000" diff --git a/vpn/admin.py b/vpn/admin.py index 910946e..554d1b6 100644 --- a/vpn/admin.py +++ b/vpn/admin.py @@ -447,18 +447,22 @@ class ServerAdmin(PolymorphicParentModelAdmin): for server in queryset: try: - # Check if this is an Outline server by checking the actual type + # Get the real polymorphic instance + real_server = server.get_real_instance() + server_type = type(real_server).__name__ + + # Check if this is an Outline server from vpn.server_plugins.outline import OutlineServer - if isinstance(server, OutlineServer) and hasattr(server, 'client'): + if isinstance(real_server, OutlineServer) and hasattr(real_server, 'client'): # For Outline servers, get all keys and delete them try: - keys = server.client.get_keys() + keys = real_server.client.get_keys() keys_count = len(keys) for key in keys: try: - server.client.delete_key(key.key_id) + real_server.client.delete_key(key.key_id) except Exception as e: self.message_user( request, @@ -482,8 +486,6 @@ class ServerAdmin(PolymorphicParentModelAdmin): level=messages.ERROR ) else: - # Show server type for debugging - server_type = type(server).__name__ self.message_user( request, f"Key purging only supported for Outline servers. Skipping '{server.name}' (type: {server_type}).", diff --git a/vpn/models.py b/vpn/models.py index 80dd8a5..c0fddd9 100644 --- a/vpn/models.py +++ b/vpn/models.py @@ -48,6 +48,14 @@ class AccessLog(models.Model): data = models.TextField(default="", blank=True, editable=False) timestamp = models.DateTimeField(auto_now_add=True) + class Meta: + indexes = [ + models.Index(fields=['user']), + models.Index(fields=['server']), + models.Index(fields=['timestamp']), + models.Index(fields=['action', 'timestamp']), + ] + def __str__(self): return f"{self.action} {self.user} request for {self.server} at {self.timestamp}"