aboutsummaryrefslogtreecommitdiff
path: root/tw/system.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tw/system.scm')
-rw-r--r--tw/system.scm16
1 files changed, 10 insertions, 6 deletions
diff --git a/tw/system.scm b/tw/system.scm
index 4df665f8..9d53af73 100644
--- a/tw/system.scm
+++ b/tw/system.scm
@@ -44,12 +44,16 @@
("pi3.twilken.net" . 51022)))
(export server-wireguard-address)
-(define* (server-wireguard-address host-name #:optional port)
- (string-replace-substring
- (car ; get the IPv4 address
- (wireguard-peer-allowed-ips
- (assoc-ref %wireguard-peers host-name)))
- "/32" (if port (format #f ":~a" port) "")))
+(define* (server-wireguard-address host-name #:optional port #:key (ipv6? #f))
+ (let ((ip (string-replace-substring
+ ((if ipv6? cadr car)
+ (wireguard-peer-allowed-ips
+ (assoc-ref %wireguard-peers host-name)))
+ (if ipv6? "/128" "/32") "")))
+ (cond
+ ((and port ipv6?) (format #f "[~a]:~a" ip port))
+ (port (format #f "~a:~a" ip port))
+ (else ip))))
(define-public (server-base-services host-name)
(cons*