peer: add DNS server(s) attribute
This commit is contained in:
parent
d128a837ba
commit
7e821eb8b0
|
@ -507,13 +507,14 @@ def main():
|
|||
def do_add_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
interface = WeegeePublicInterface.load(ctx, args.interface)
|
||||
peer = WeegeePeer.create(ctx, args.name, interface,
|
||||
routes=args.route, host=args.endpoint, port=args.port,
|
||||
routes=args.route, host=args.endpoint, port=args.port, dns=args.dns,
|
||||
extra=args.metadata,
|
||||
)
|
||||
peer.save()
|
||||
|
||||
add_peer = peer_commands.add_parser('create', help='add new peer')
|
||||
add_peer.add_argument('-r', '--route', type=ipaddress.ip_network, action='append', default=[], help='peer route(s)')
|
||||
add_peer.add_argument('-n', '--dns', type=ipaddress.ip_address, action='append', default=[], help='peer DNS server(s)')
|
||||
add_peer.add_argument('-e', '--endpoint', metavar='HOST', help='peer endpoint host (optional)')
|
||||
add_peer.add_argument('-p', '--port', type=int, help='peer endpoint port (optional)')
|
||||
add_peer.add_argument('-d', '--metadata', action='append', help='metadata item(s)')
|
||||
|
@ -536,13 +537,14 @@ def main():
|
|||
private_key=args.private_key, public_key=args.public_key,
|
||||
addresses=args.address, port=args.port, hosts=[WeegeeHost.load(ctx, name) for name in args.host or ctx.get_config().default_server_hosts],
|
||||
)
|
||||
server = WeegeeServer.create(ctx, args.name, interface, routes=args.route, host=args.endpoint, extra=args.metadata)
|
||||
server = WeegeeServer.create(ctx, args.name, interface, routes=args.route, host=args.endpoint, dns=args.dns, extra=args.metadata)
|
||||
server.save()
|
||||
|
||||
add_server = server_commands.add_parser('create', help='add new server')
|
||||
add_server.add_argument('-H', '--host', action='append', default=[], help='server host(s)')
|
||||
add_server.add_argument('-a', '--address', type=ipaddress.ip_interface, action='append', help='interface address(es)')
|
||||
add_server.add_argument('-r', '--route', type=ipaddress.ip_network, default=[], action='append', help='interface route(s) for clients')
|
||||
add_server.add_argument('-n', '--dns', type=ipaddress.ip_address, action='append', default=[], help='DNS server(s) for clients')
|
||||
add_server.add_argument('-k', '--public-key', metavar='KEY', help='public key (optional)')
|
||||
add_server.add_argument('-K', '--private-key', metavar='KEY', help='private key (optional)')
|
||||
add_server.add_argument('-i', '--interface', metavar='NAME', help='interface name (optional)')
|
||||
|
|
|
@ -410,11 +410,12 @@ class WeegeePeer(WeegeeBase):
|
|||
return set(p for p in cls.find_all(ctx) if p.interface.to_public() in interfaces)
|
||||
|
||||
@classmethod
|
||||
def create(cls, ctx: WeegeeContext, name: str, interface: WeegeePublicInterface, routes: List[IPNetwork], host: O[str] = None, port: O[int] = None, extra: O[List[str]] = None) -> 'WeegeePeer':
|
||||
def create(cls, ctx: WeegeeContext, name: str, interface: WeegeePublicInterface, routes: List[IPNetwork], host: O[str] = None, port: O[int] = None, dns: List[IPAddress] = [], extra: O[List[str]] = None) -> 'WeegeePeer':
|
||||
return super().create(ctx, name,
|
||||
interface=interface.item,
|
||||
routes=routes,
|
||||
host=host, port=port,
|
||||
dns=dns,
|
||||
extra=extra,
|
||||
)
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ WEEGEE_PEER = WeegeeMeta(
|
|||
'routes: [ipnet]',
|
||||
'host: ?str = ',
|
||||
'port: ?int = ',
|
||||
'dns: [ipaddr] = []',
|
||||
],
|
||||
item_prefix='wg/peer',
|
||||
)
|
||||
|
@ -158,8 +159,12 @@ WEEGEE_INTERFACE_CONF_WGQUICK = WeegeeTemplate(
|
|||
name='wg/interface-conf/wg-quick',
|
||||
version=1,
|
||||
template="""
|
||||
{% set dns = peers.values() | sum(attribute='dns', start=[]) %}
|
||||
[Interface]
|
||||
Address = {{ interface.addresses | join(", ") }}
|
||||
{% if dns -%}
|
||||
DNS = {{ dns | join(", ") }}
|
||||
{% endif -%}
|
||||
{% if interface.port -%}
|
||||
ListenPort = {{interface.port}}
|
||||
{% endif -%}
|
||||
|
|
Loading…
Reference in New Issue