bundlewrap/bin/wireguard_client_config
mwiegand cf54948abb wip
2021-10-10 00:06:28 +02:00

27 lines
927 B
Python
Executable file

#!/usr/bin/env python3
from bundlewrap.repo import Repository
from os.path import realpath, dirname
from sys import argv
from ipaddress import ip_network, ip_interface
repo = Repository(dirname(dirname(realpath(__file__))))
server_node = repo.get_node('htz.mails')
server_pubkey = repo.libs.keys.get_pubkey_from_privkey(f'{server_node.name} wireguard pubkey', server_node.metadata.get('wireguard/privatekey'))
data = server_node.metadata.get(f'wireguard/clients/{argv[1]}')
print(
f'''[Interface]
PrivateKey = {data['privkey']}
ListenPort = 51820
Address = {data['ip']}
DNS = 8.8.8.8
[Peer]
PublicKey = {server_pubkey}
PresharedKey = {data['psk']}
AllowedIPs = {ip_interface(server_node.metadata.get('wireguard/my_ip')).ip}, {ip_interface(server_node.metadata.get('wireguard/my_ip')).network}, 10.0.0.0/16
Endpoint = {ip_interface(server_node.metadata.get('network/external/ipv4')).ip}:51820
PersistentKeepalive = 10'''
)