wg-manager/wg_connection_manager/dj_wg_manager_task.py

68 lines
2.7 KiB
Python
Raw Normal View History

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 django.db import transaction
from .models import UserConnection
from pywireguard.factory import Peer
import environ
from celery import Celery
from .wg_manager import WGManager
env = environ.Env(WG_INTERFACE=(str, "wg0"), CELERY_BROKER=(str, "redis://localhost"), CELERY_BACKEND=(str, "redis://localhost"))
environ.Env.read_env(".env")
WG_INTERFACE = env("WG_INTERFACE")
CELERY_BROKER = env("CELERY_BROKER")
CELERY_BACKEND = env("CELERY_BACKEND")
class DJWGManager:
wg_manager: WGManager
app: Celery
def __init__(self):
self.app = Celery("wg_manager_tasks", broker=CELERY_BROKER, backend=CELERY_BACKEND)
2024-10-14 21:50:07 +02:00
# self.app.conf.event_serializer = (
# "pickle" # this event_serializer is optional. somehow i missed this when writing this solution and it still worked without.
# )
# self.app.conf.task_serializer = "pickle"
# self.app.conf.result_serializer = "pickle"
# self.app.conf.accept_content = ["application/json", "application/x-python-serialize"]
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
def sync(self):
with transaction.atomic():
UserConnection.objects.filter(active=True).update(active=False)
res = self.app.send_task("wg_connection_manager_worker.tasks.get_peers")
peers = res.get()
for peer in peers:
2024-10-14 21:50:07 +02:00
pk = peer["public_key"].decode("ascii")
psk = peer["preshared_key"].decode("ascii")
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
if not peer.allowed_ips:
continue
connection = UserConnection.objects.filter(public_key=pk)
if len(connection) == 1:
connection = connection[0]
else:
connection = UserConnection()
connection.public_key = pk
connection.preshared_key = psk
connection.active = True
connection.vpn_ip = peer.allowed_ips[0]
connection.save()
def add_peer(self, user_connection: UserConnection):
self.app.send_task(
"wg_connection_manager_worker.tasks.add_peer",
2024-10-14 21:50:07 +02:00
[{"public_key": user_connection.public_key, "preshared_key": user_connection.preshared_key, "allowed_ips": [user_connection.vpn_ip]}],
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
)
self.sync()
def remove_peer(self, user_connection: UserConnection):
pk = user_connection.public_key
res = self.app.send_task("wg_connection_manager_worker.tasks.get_peers")
peers = res.get()
2024-10-14 21:50:07 +02:00
peer = list(filter(lambda x: x["public_key"].decode("ascii") == pk, peers))
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
if not peer:
# TODO raise exception/ignore?
return
peer = peer[0]
res = self.app.send_task("wg_connection_manager_worker.tasks.remove_peer", [peer])
self.sync()