mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-08-21 14:37:16 +00:00
Adjust ACLLinks length. Added links generator
Some checks failed
Docker hub build / docker (push) Has been cancelled
Some checks failed
Docker hub build / docker (push) Has been cancelled
This commit is contained in:
64
.vscode/launch.json
vendored
Normal file
64
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Django VPN app",
|
||||||
|
"type": "debugpy",
|
||||||
|
"request": "launch",
|
||||||
|
"env": {
|
||||||
|
"POSTGRES_PORT": "5433",
|
||||||
|
"DJANGO_SETTINGS_MODULE": "mysite.settings",
|
||||||
|
"EXTERNAL_ADDRESS": "http://localhost:8000"
|
||||||
|
},
|
||||||
|
"args": [
|
||||||
|
"runserver",
|
||||||
|
"0.0.0.0:8000"
|
||||||
|
],
|
||||||
|
"django": true,
|
||||||
|
"autoStartBrowser": false,
|
||||||
|
"program": "${workspaceFolder}/manage.py"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Celery Worker",
|
||||||
|
"type": "debugpy",
|
||||||
|
"request": "launch",
|
||||||
|
"module": "celery",
|
||||||
|
"args": [
|
||||||
|
"-A", "mysite",
|
||||||
|
"worker",
|
||||||
|
"--loglevel=info"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"POSTGRES_PORT": "5433",
|
||||||
|
"DJANGO_SETTINGS_MODULE": "mysite.settings"
|
||||||
|
},
|
||||||
|
"console": "integratedTerminal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Celery Beat",
|
||||||
|
"type": "debugpy",
|
||||||
|
"request": "launch",
|
||||||
|
"module": "celery",
|
||||||
|
"args": [
|
||||||
|
"-A", "mysite",
|
||||||
|
"beat",
|
||||||
|
"--loglevel=info"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"POSTGRES_PORT": "5433",
|
||||||
|
"DJANGO_SETTINGS_MODULE": "mysite.settings"
|
||||||
|
},
|
||||||
|
"console": "integratedTerminal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compounds": [
|
||||||
|
{
|
||||||
|
"name": "Run Django, Celery Worker, and Celery Beat",
|
||||||
|
"configurations": [
|
||||||
|
"Django VPN app",
|
||||||
|
"Celery Worker",
|
||||||
|
"Celery Beat"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -13,6 +13,7 @@ environ.Env.read_env()
|
|||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
SECRET_KEY=ENV('SECRET_KEY', default=get_random_secret_key())
|
SECRET_KEY=ENV('SECRET_KEY', default=get_random_secret_key())
|
||||||
TIME_ZONE = ENV('TIMEZONE', default='Asia/Nicosia')
|
TIME_ZONE = ENV('TIMEZONE', default='Asia/Nicosia')
|
||||||
|
EXTERNAL_ADDRESS = ENV('EXTERNAL_ADDRESS', default='https://example.org')
|
||||||
|
|
||||||
CELERY_BROKER_URL = ENV('CELERY_BROKER_URL', default='redis://localhost:6379/0')
|
CELERY_BROKER_URL = ENV('CELERY_BROKER_URL', default='redis://localhost:6379/0')
|
||||||
CELERY_RESULT_BACKEND = 'django-db'
|
CELERY_RESULT_BACKEND = 'django-db'
|
||||||
@@ -154,7 +155,7 @@ DATABASES = {
|
|||||||
'ENGINE': 'django.db.backends.postgresql',
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
'NAME': ENV('POSTGRES_DB', default="outfleet"),
|
'NAME': ENV('POSTGRES_DB', default="outfleet"),
|
||||||
'USER': ENV('POSTGRES_USER', default="outfleet"),
|
'USER': ENV('POSTGRES_USER', default="outfleet"),
|
||||||
'PASSWORD': ENV('POSTGRES_PASSWORD', default="password"),
|
'PASSWORD': ENV('POSTGRES_PASSWORD', default="outfleet"),
|
||||||
'HOST': ENV('POSTGRES_HOST', default='localhost'),
|
'HOST': ENV('POSTGRES_HOST', default='localhost'),
|
||||||
'PORT': ENV('POSTGRES_PORT', default='5432'),
|
'PORT': ENV('POSTGRES_PORT', default='5432'),
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ from .models import User, AccessLog
|
|||||||
from django.utils.timezone import localtime
|
from django.utils.timezone import localtime
|
||||||
from vpn.models import User, ACL, ACLLink
|
from vpn.models import User, ACL, ACLLink
|
||||||
from vpn.forms import UserForm
|
from vpn.forms import UserForm
|
||||||
|
from mysite.settings import EXTERNAL_ADDRESS
|
||||||
from .server_plugins import (
|
from .server_plugins import (
|
||||||
Server,
|
Server,
|
||||||
WireguardServer,
|
WireguardServer,
|
||||||
@@ -164,8 +165,9 @@ class ACLAdmin(admin.ModelAdmin):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return mark_safe(f"<span style='color: red;'>Error: {e}</span>")
|
return mark_safe(f"<span style='color: red;'>Error: {e}</span>")
|
||||||
|
|
||||||
@admin.display(description='Links')
|
@admin.display(description='Dynamic Config Links')
|
||||||
def display_links(self, obj):
|
def display_links(self, obj):
|
||||||
links = obj.links.all()
|
links = obj.links.all()
|
||||||
return mark_safe('<br>'.join([link.link for link in links]))
|
formatted_links = [f"{EXTERNAL_ADDRESS}/{link.link}" for link in links]
|
||||||
|
return mark_safe('<br>'.join(formatted_links))
|
||||||
|
|
||||||
|
@@ -67,7 +67,7 @@ def acl_deleted(sender, instance, **kwargs):
|
|||||||
|
|
||||||
class ACLLink(models.Model):
|
class ACLLink(models.Model):
|
||||||
acl = models.ForeignKey(ACL, related_name='links', on_delete=models.CASCADE)
|
acl = models.ForeignKey(ACL, related_name='links', on_delete=models.CASCADE)
|
||||||
link = models.CharField(max_length=64, default="", unique=True, blank=True, null=True, verbose_name="Access link", help_text="Access link to get dynamic configuration")
|
link = models.CharField(max_length=1024, default="", unique=True, blank=True, null=True, verbose_name="Access link", help_text="Access link to get dynamic configuration")
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if self.link == "":
|
if self.link == "":
|
||||||
|
Reference in New Issue
Block a user