forked from uncloud/uncloud
85b4d70592
[15:40] line:~% http -a nicoschottelius:$(pass ungleich.ch/nico.schottelius@ungleich.ch) http://localhost:8000/net/vpn/ network_size=48 wireguard_public_key=$(wg genkey | wg pubkey) HTTP/1.1 201 Created Allow: GET, POST, HEAD, OPTIONS Content-Length: 206 Content-Type: application/json Date: Sun, 12 Apr 2020 13:40:26 GMT Server: WSGIServer/0.2 CPython/3.7.3 Vary: Accept X-Content-Type-Options: nosniff X-Frame-Options: DENY { "extra_data": null, "network": "2a0a:e5c1:203::", "order": null, "owner": 30, "status": "PENDING", "uuid": "8f977a8f-e06a-4346-94ae-8f525df58b7b", "wireguard_public_key": "JvCuUTZHm9unasJkGsLKN0Bf/hu6ZSIv7dnIGPyJ6xA=" }
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
import sys
|
|
from datetime import datetime
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from opennebula.models import VM as VMModel
|
|
from uncloud_vm.models import VMHost, VMProduct, VMNetworkCard, VMDiskImageProduct, VMDiskProduct, VMCluster
|
|
|
|
import logging
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
peer_template="""
|
|
# {username}
|
|
[Peer]
|
|
PublicKey = {public_key}
|
|
AllowedIPs = {vpnnetwork}
|
|
"""
|
|
|
|
class Command(BaseCommand):
|
|
help = 'General uncloud commands'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('--hostname',
|
|
action='store_true',
|
|
help='Name of this VPN Host',
|
|
required=True)
|
|
|
|
def handle(self, *args, **options):
|
|
if options['bootstrap']:
|
|
self.bootstrap()
|
|
|
|
self.create_vpn_config(options['hostname'])
|
|
|
|
def create_vpn_config(self, hostname):
|
|
configs = []
|
|
|
|
for pool in VPNPool.objects.filter(vpn_hostname=hostname):
|
|
configs.append(pool_config)
|
|
|
|
print(configs)
|