From aec79cba74604f57c07b8a99f0a043045378901b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 13 Dec 2020 18:05:48 +0100 Subject: [PATCH] [vpn] include vpn server public key --- ...2_wireguardvpnpool_wireguard_public_key.py | 19 +++++++++++++++++++ uncloud_net/models.py | 10 ++++++++++ uncloud_net/serializers.py | 6 ++++-- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 uncloud_net/migrations/0002_wireguardvpnpool_wireguard_public_key.py diff --git a/uncloud_net/migrations/0002_wireguardvpnpool_wireguard_public_key.py b/uncloud_net/migrations/0002_wireguardvpnpool_wireguard_public_key.py new file mode 100644 index 0000000..479aba1 --- /dev/null +++ b/uncloud_net/migrations/0002_wireguardvpnpool_wireguard_public_key.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1 on 2020-12-13 17:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('uncloud_net', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='wireguardvpnpool', + name='wireguard_public_key', + field=models.CharField(default='', max_length=48), + preserve_default=False, + ), + ] diff --git a/uncloud_net/models.py b/uncloud_net/models.py index 1b69a9e..88c0ec8 100644 --- a/uncloud_net/models.py +++ b/uncloud_net/models.py @@ -24,6 +24,7 @@ class WireGuardVPNPool(models.Model): vpn_server_hostname = models.CharField(max_length=256) wireguard_private_key = models.CharField(max_length=48) + wireguard_public_key = models.CharField(max_length=48) @property def max_pool_index(self): @@ -60,6 +61,14 @@ class WireGuardVPN(models.Model): def network_mask(self): return self.vpnpool.subnetwork_mask + @property + def vpn_server(self): + return self.vpnpool.vpn_server_hostname + + @property + def vpn_server_public_key(self): + return self.vpnpool.wireguard_public_key + @property def address(self): """ @@ -77,6 +86,7 @@ class WireGuardVPN(models.Model): def __str__(self): return f"{self.address} ({self.pool_index})" + class WireGuardVPNFreeLeases(models.Model): """ Previously used VPNNetworks diff --git a/uncloud_net/serializers.py b/uncloud_net/serializers.py index 46d2344..6965aa7 100644 --- a/uncloud_net/serializers.py +++ b/uncloud_net/serializers.py @@ -9,12 +9,14 @@ from .services import * class WireGuardVPNSerializer(serializers.ModelSerializer): address = serializers.CharField(read_only=True) + vpn_server = serializers.CharField(read_only=True) + vpn_server_public_key = serializers.CharField(read_only=True) network_mask = serializers.IntegerField() class Meta: model = WireGuardVPN - fields = [ 'wireguard_public_key', 'address', 'network_mask' ] - read_only_fields = [ 'address ' ] + fields = [ 'wireguard_public_key', 'address', 'network_mask', 'vpn_server', + 'vpn_server_public_key' ] extra_kwargs = { 'network_mask': {'write_only': True }