forked from uncloud/uncloud
update to work on different computer
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
This commit is contained in:
parent
913e992a48
commit
938f0a3390
7 changed files with 139 additions and 88 deletions
|
|
@ -1,4 +1,7 @@
|
|||
import base64
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import *
|
||||
|
|
@ -10,9 +13,48 @@ class VPNPoolSerializer(serializers.ModelSerializer):
|
|||
|
||||
class VPNNetworkSerializer(serializers.ModelSerializer):
|
||||
|
||||
network_size = serializers.IntegerField(min_value=0,
|
||||
max_value=128)
|
||||
|
||||
class Meta:
|
||||
model = VPNNetwork
|
||||
fields = '__all__'
|
||||
|
||||
# This is required for finding the VPN pool, but does not
|
||||
# exist in the model
|
||||
network_size = serializers.IntegerField(min_value=0,
|
||||
max_value=128)
|
||||
|
||||
def validate_wireguard_public_key(self, value):
|
||||
msg = _("Supplied key is not a valid wireguard public key")
|
||||
|
||||
""" FIXME: verify that this does not create broken wireguard config files,
|
||||
i.e. contains \n or similar!
|
||||
We might even need to be more strict to not break wireguard...
|
||||
"""
|
||||
print(value)
|
||||
|
||||
try:
|
||||
base64.standard_b64decode(value)
|
||||
except Exception as e:
|
||||
raise serializers.ValidationError(msg)
|
||||
|
||||
if '\n' in value:
|
||||
raise serializers.ValidationError(msg)
|
||||
|
||||
return value
|
||||
|
||||
def validate(self, data):
|
||||
|
||||
# FIXME: filter for status = active or similar
|
||||
all_pools = VPNPool.objects.all()
|
||||
sizes = [ p.subnetwork_size for p in all_pools ]
|
||||
|
||||
pools = VPNPool.objects.filter(subnetwork_size=data['network_size'])
|
||||
|
||||
if len(pools) == 0:
|
||||
msg = _("No pool available for networks with size = {}. Available are: {}".format(data['network_size'], sizes))
|
||||
raise serializers.ValidationError(msg)
|
||||
|
||||
|
||||
return data
|
||||
|
||||
def create(self, validated_data):
|
||||
from_pool =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue