summaryrefslogtreecommitdiff
path: root/src/main/resources/io/trygvis/rules/acme/vpn.drl
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/io/trygvis/rules/acme/vpn.drl')
-rw-r--r--src/main/resources/io/trygvis/rules/acme/vpn.drl50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/resources/io/trygvis/rules/acme/vpn.drl b/src/main/resources/io/trygvis/rules/acme/vpn.drl
new file mode 100644
index 0000000..3f62fbd
--- /dev/null
+++ b/src/main/resources/io/trygvis/rules/acme/vpn.drl
@@ -0,0 +1,50 @@
+package io.trygvis.rules.acme;
+
+import io.trygvis.rules.machine.Machine;
+import io.trygvis.rules.dns.DnsEntry;
+
+dialect "mvel"
+
+declare WgNet
+ name : String
+ domain : String
+end
+
+declare WgHost
+ name : String
+ machine : Machine
+ net : String
+ publicName : String
+ netToNetIp : String
+ networkIp : String
+end
+
+rule "Set name from machine's name"
+ salience 10
+when
+ $h : WgHost(name == null, machine != null)
+then
+ $h.name = $h.machine.name;
+
+ update($h)
+end
+
+rule "WgHost VPN machines"
+when
+ $machine : Machine(name.startsWith("acme-"))
+ $wgNet : WgNet(name == "vs0")
+then
+ var wgHost = new WgHost();
+ wgHost.machine = $machine;
+ wgHost.net = $wgNet.name;
+ insert(wgHost)
+end
+
+rule "Make DNS entries for all VPN hosts"
+when
+ $h : WgHost()
+ $net : WgNet(name == $h.net)
+then
+ var fqdn = "%s.%s".formatted($h.name, $net.domain);
+ insert(DnsEntry.a(fqdn))
+end