mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-08-21 14:37:16 +00:00
Added indexes to logs
This commit is contained in:
@@ -19,8 +19,8 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
command: >
|
command: >
|
||||||
sh -c "sleep 3 &&
|
sh -c "sleep 1 &&
|
||||||
python manage.py makemigrations vpn &&
|
python manage.py makemigrations &&
|
||||||
python manage.py migrate &&
|
python manage.py migrate &&
|
||||||
python manage.py create_admin &&
|
python manage.py create_admin &&
|
||||||
python manage.py runserver 0.0.0.0:8000"
|
python manage.py runserver 0.0.0.0:8000"
|
||||||
|
14
vpn/admin.py
14
vpn/admin.py
@@ -447,18 +447,22 @@ class ServerAdmin(PolymorphicParentModelAdmin):
|
|||||||
|
|
||||||
for server in queryset:
|
for server in queryset:
|
||||||
try:
|
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
|
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
|
# For Outline servers, get all keys and delete them
|
||||||
try:
|
try:
|
||||||
keys = server.client.get_keys()
|
keys = real_server.client.get_keys()
|
||||||
keys_count = len(keys)
|
keys_count = len(keys)
|
||||||
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
try:
|
try:
|
||||||
server.client.delete_key(key.key_id)
|
real_server.client.delete_key(key.key_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.message_user(
|
self.message_user(
|
||||||
request,
|
request,
|
||||||
@@ -482,8 +486,6 @@ class ServerAdmin(PolymorphicParentModelAdmin):
|
|||||||
level=messages.ERROR
|
level=messages.ERROR
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# Show server type for debugging
|
|
||||||
server_type = type(server).__name__
|
|
||||||
self.message_user(
|
self.message_user(
|
||||||
request,
|
request,
|
||||||
f"Key purging only supported for Outline servers. Skipping '{server.name}' (type: {server_type}).",
|
f"Key purging only supported for Outline servers. Skipping '{server.name}' (type: {server_type}).",
|
||||||
|
@@ -48,6 +48,14 @@ class AccessLog(models.Model):
|
|||||||
data = models.TextField(default="", blank=True, editable=False)
|
data = models.TextField(default="", blank=True, editable=False)
|
||||||
timestamp = models.DateTimeField(auto_now_add=True)
|
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):
|
def __str__(self):
|
||||||
return f"{self.action} {self.user} request for {self.server} at {self.timestamp}"
|
return f"{self.action} {self.user} request for {self.server} at {self.timestamp}"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user