wg-manager/wg_connection_manager/views.py

84 lines
2.9 KiB
Python
Raw Permalink Normal View History

2024-10-06 12:56:12 +02:00
from django.shortcuts import render, get_object_or_404, redirect
2024-10-09 18:44:35 +02:00
from django.http import HttpRequest, HttpResponseNotAllowed, HttpResponseNotFound, HttpResponseBadRequest
2024-10-06 12:56:12 +02:00
from .models import UserConnection
from django.contrib.auth.decorators import login_required
feat: containers and celery worker Squashed commit of the following: commit f3c87deb32418b3042a4a976608f7bc6b7686c04 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:47:36 2024 +0200 chore: refresh button commit e7c831e0c20a438a0ee9240fe637a81f2f454d81 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:37:56 2024 +0200 feat: wrapping up containers commit e571b00c3d1f310dba99b187b4009ed8247bd845 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:27:52 2024 +0200 fix: sort out sub commit 4a75d4561b30392908f95d7f052467594de6b049 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:24:56 2024 +0200 fix: sort out sub commit 3c1030a2fe1cf7380aa6dfb5827bc3a4a48fbcb7 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:29:29 2024 +0200 chore: optimize image build commit f63d1b185b90bd8db8712089f339e5fe9ddc5af6 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:28:11 2024 +0200 chore: optimize image build commit 0d9a1754384c4012ba486fccc33cc43ca41f1ed4 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:26:16 2024 +0200 chore: optimize image build commit bb510718d2a684fff873418e745ce8bebbd02b7b Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:08:22 2024 +0200 fix: toggle_connection commit b48a12c1f31c524325be17032f8148160035829d Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:02:30 2024 +0200 fix: toggle_connection commit 343c36002b1dd445781611199a0c532a5b111185 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:27:14 2024 +0200 fix: serialization commit 880909912c740e72e4be9642088a708b8e088bd3 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:24:06 2024 +0200 fix: sync command commit fbabd0cfcad23a79477e2fbf9109253ee0702d87 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:13:10 2024 +0200 fix: import Peer commit 444f612452170698c74c0a9e8c0731bfd14f67e0 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:09:28 2024 +0200 chore: use celery commit 2f9699129436432d92b0fb487fd4de3b3d663fd1 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:02:40 2024 +0200 fix: make gunicorn listen on 0.0.0.0 commit 313f23e23ca6acb1bddb0b4b89ebcb951ad36f32 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:59:22 2024 +0200 chore: docker stuff compat commit c17153112bc1a000e57ffe2346ec516056714777 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:55:39 2024 +0200 feat: celery decoupling
2024-10-13 23:49:48 +02:00
from .dj_wg_manager_factory import get_dj_wg_manager
2024-10-06 12:56:12 +02:00
from django import forms
2024-10-20 00:12:07 +02:00
from django_otp.decorators import otp_required
2024-10-06 12:56:12 +02:00
class UserConnectionForm(forms.ModelForm):
class Meta:
model = UserConnection
fields = ["public_key", "preshared_key", "vpn_ip", "notes"]
@login_required
def list_connections(request: HttpRequest):
user = request.user
2024-10-20 12:11:51 +02:00
if not user.is_verified():
return redirect("two_factor:setup")
2024-10-06 12:56:12 +02:00
if request.method == "POST":
form = UserConnectionForm(request.POST)
if form.is_valid():
c = UserConnection(
user=user,
preshared_key=form.cleaned_data["preshared_key"],
public_key=form.cleaned_data["public_key"],
vpn_ip=form.cleaned_data["vpn_ip"],
notes=form.cleaned_data["notes"],
)
c.save()
form = UserConnectionForm()
else:
form = UserConnectionForm()
if user.is_superuser:
connections = UserConnection.objects.filter().order_by("user__username")
else:
connections = UserConnection.objects.filter(user=user)
return render(request, "connection_list.html", context={"connections": connections, "form": form})
2024-10-20 00:12:07 +02:00
@otp_required
2024-10-06 12:56:12 +02:00
def toggle_connection(request: HttpRequest, connection_id: int):
2024-10-20 12:11:51 +02:00
2024-10-06 12:56:12 +02:00
if request.method != "POST" or "state" not in request.POST:
return HttpResponseBadRequest()
if request.POST["state"] not in ["enabled", "disabled"]:
return HttpResponseBadRequest("invalid state")
connection = get_object_or_404(UserConnection, pk=connection_id)
if connection.user != request.user and not request.user.is_superuser:
2024-10-09 18:44:35 +02:00
return HttpResponseNotFound()
feat: containers and celery worker Squashed commit of the following: commit f3c87deb32418b3042a4a976608f7bc6b7686c04 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:47:36 2024 +0200 chore: refresh button commit e7c831e0c20a438a0ee9240fe637a81f2f454d81 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:37:56 2024 +0200 feat: wrapping up containers commit e571b00c3d1f310dba99b187b4009ed8247bd845 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:27:52 2024 +0200 fix: sort out sub commit 4a75d4561b30392908f95d7f052467594de6b049 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:24:56 2024 +0200 fix: sort out sub commit 3c1030a2fe1cf7380aa6dfb5827bc3a4a48fbcb7 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:29:29 2024 +0200 chore: optimize image build commit f63d1b185b90bd8db8712089f339e5fe9ddc5af6 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:28:11 2024 +0200 chore: optimize image build commit 0d9a1754384c4012ba486fccc33cc43ca41f1ed4 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:26:16 2024 +0200 chore: optimize image build commit bb510718d2a684fff873418e745ce8bebbd02b7b Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:08:22 2024 +0200 fix: toggle_connection commit b48a12c1f31c524325be17032f8148160035829d Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:02:30 2024 +0200 fix: toggle_connection commit 343c36002b1dd445781611199a0c532a5b111185 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:27:14 2024 +0200 fix: serialization commit 880909912c740e72e4be9642088a708b8e088bd3 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:24:06 2024 +0200 fix: sync command commit fbabd0cfcad23a79477e2fbf9109253ee0702d87 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:13:10 2024 +0200 fix: import Peer commit 444f612452170698c74c0a9e8c0731bfd14f67e0 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:09:28 2024 +0200 chore: use celery commit 2f9699129436432d92b0fb487fd4de3b3d663fd1 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:02:40 2024 +0200 fix: make gunicorn listen on 0.0.0.0 commit 313f23e23ca6acb1bddb0b4b89ebcb951ad36f32 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:59:22 2024 +0200 chore: docker stuff compat commit c17153112bc1a000e57ffe2346ec516056714777 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:55:39 2024 +0200 feat: celery decoupling
2024-10-13 23:49:48 +02:00
wg_manager = get_dj_wg_manager()
2024-10-06 12:56:12 +02:00
match request.POST["state"]:
case "enabled":
wg_manager.add_peer(connection)
case "disabled":
wg_manager.remove_peer(connection)
return redirect("connections_list")
2024-10-20 12:11:51 +02:00
# @login_required
2024-10-20 00:12:07 +02:00
@otp_required
2024-10-06 12:56:12 +02:00
def delete_connection(request: HttpRequest, connection_id: int):
connection = get_object_or_404(UserConnection, pk=connection_id)
if connection.user != request.user and not request.user.is_superuser:
2024-10-09 18:44:35 +02:00
return HttpResponseNotFound()
2024-10-06 12:56:12 +02:00
# sync and disable before delete
feat: containers and celery worker Squashed commit of the following: commit f3c87deb32418b3042a4a976608f7bc6b7686c04 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:47:36 2024 +0200 chore: refresh button commit e7c831e0c20a438a0ee9240fe637a81f2f454d81 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:37:56 2024 +0200 feat: wrapping up containers commit e571b00c3d1f310dba99b187b4009ed8247bd845 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:27:52 2024 +0200 fix: sort out sub commit 4a75d4561b30392908f95d7f052467594de6b049 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:24:56 2024 +0200 fix: sort out sub commit 3c1030a2fe1cf7380aa6dfb5827bc3a4a48fbcb7 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:29:29 2024 +0200 chore: optimize image build commit f63d1b185b90bd8db8712089f339e5fe9ddc5af6 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:28:11 2024 +0200 chore: optimize image build commit 0d9a1754384c4012ba486fccc33cc43ca41f1ed4 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:26:16 2024 +0200 chore: optimize image build commit bb510718d2a684fff873418e745ce8bebbd02b7b Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:08:22 2024 +0200 fix: toggle_connection commit b48a12c1f31c524325be17032f8148160035829d Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:02:30 2024 +0200 fix: toggle_connection commit 343c36002b1dd445781611199a0c532a5b111185 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:27:14 2024 +0200 fix: serialization commit 880909912c740e72e4be9642088a708b8e088bd3 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:24:06 2024 +0200 fix: sync command commit fbabd0cfcad23a79477e2fbf9109253ee0702d87 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:13:10 2024 +0200 fix: import Peer commit 444f612452170698c74c0a9e8c0731bfd14f67e0 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:09:28 2024 +0200 chore: use celery commit 2f9699129436432d92b0fb487fd4de3b3d663fd1 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:02:40 2024 +0200 fix: make gunicorn listen on 0.0.0.0 commit 313f23e23ca6acb1bddb0b4b89ebcb951ad36f32 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:59:22 2024 +0200 chore: docker stuff compat commit c17153112bc1a000e57ffe2346ec516056714777 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:55:39 2024 +0200 feat: celery decoupling
2024-10-13 23:49:48 +02:00
wg_manager = get_dj_wg_manager()
2024-10-06 12:56:12 +02:00
wg_manager.sync()
if connection.active:
wg_manager.remove_peer(connection)
connection.delete()
return redirect("connections_list")
@login_required
def sync(request: HttpRequest):
if request.user.is_superuser:
feat: containers and celery worker Squashed commit of the following: commit f3c87deb32418b3042a4a976608f7bc6b7686c04 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:47:36 2024 +0200 chore: refresh button commit e7c831e0c20a438a0ee9240fe637a81f2f454d81 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 23:37:56 2024 +0200 feat: wrapping up containers commit e571b00c3d1f310dba99b187b4009ed8247bd845 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:27:52 2024 +0200 fix: sort out sub commit 4a75d4561b30392908f95d7f052467594de6b049 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 21:24:56 2024 +0200 fix: sort out sub commit 3c1030a2fe1cf7380aa6dfb5827bc3a4a48fbcb7 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:29:29 2024 +0200 chore: optimize image build commit f63d1b185b90bd8db8712089f339e5fe9ddc5af6 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:28:11 2024 +0200 chore: optimize image build commit 0d9a1754384c4012ba486fccc33cc43ca41f1ed4 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:26:16 2024 +0200 chore: optimize image build commit bb510718d2a684fff873418e745ce8bebbd02b7b Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:08:22 2024 +0200 fix: toggle_connection commit b48a12c1f31c524325be17032f8148160035829d Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 20:02:30 2024 +0200 fix: toggle_connection commit 343c36002b1dd445781611199a0c532a5b111185 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:27:14 2024 +0200 fix: serialization commit 880909912c740e72e4be9642088a708b8e088bd3 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:24:06 2024 +0200 fix: sync command commit fbabd0cfcad23a79477e2fbf9109253ee0702d87 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:13:10 2024 +0200 fix: import Peer commit 444f612452170698c74c0a9e8c0731bfd14f67e0 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:09:28 2024 +0200 chore: use celery commit 2f9699129436432d92b0fb487fd4de3b3d663fd1 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 19:02:40 2024 +0200 fix: make gunicorn listen on 0.0.0.0 commit 313f23e23ca6acb1bddb0b4b89ebcb951ad36f32 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:59:22 2024 +0200 chore: docker stuff compat commit c17153112bc1a000e57ffe2346ec516056714777 Author: Andrea Zucchelli <zukka77@gmail.com> Date: Sun Oct 13 18:55:39 2024 +0200 feat: celery decoupling
2024-10-13 23:49:48 +02:00
wg_manager = get_dj_wg_manager()
2024-10-06 12:56:12 +02:00
wg_manager.sync()
return redirect("connections_list")
return HttpResponseNotAllowed()