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